Initial commit - Mini CMS complet (PHP + Docker + MinIO)
This commit is contained in:
17
infrastructure/.env
Normal file
17
infrastructure/.env
Normal file
@@ -0,0 +1,17 @@
|
||||
# MySQL
|
||||
MYSQL_ROOT_PASSWORD=rootpassword
|
||||
MYSQL_DATABASE=forum_database
|
||||
MYSQL_USER=myuser
|
||||
MYSQL_PASSWORD=mypassword
|
||||
MYSQL_PORT=3306
|
||||
|
||||
# MinIO
|
||||
MINIO_ROOT_USER=minioadmin
|
||||
MINIO_ROOT_PASSWORD=minioadmin
|
||||
MINIO_PORT=9000
|
||||
MINIO_CONSOLE_PORT=9001
|
||||
MINIO_ENDPOINT=http://minio:9000
|
||||
MINIO_BUCKET=bucketforum
|
||||
MINIO_ACCESS_KEY=minioadmin
|
||||
MINIO_SECRET_KEY=minioadmin
|
||||
MINIO_REGION=us-east-1
|
||||
68
infrastructure/docker-compose.yaml
Normal file
68
infrastructure/docker-compose.yaml
Normal file
@@ -0,0 +1,68 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
app:
|
||||
build:
|
||||
context: ../forum-project
|
||||
dockerfile: Dockerfile
|
||||
container_name: php_app
|
||||
ports:
|
||||
- "8080:80"
|
||||
volumes:
|
||||
- ../forum-project:/var/www/html
|
||||
env_file:
|
||||
- .env
|
||||
|
||||
|
||||
depends_on:
|
||||
- mysql
|
||||
|
||||
mysql:
|
||||
image: mysql:8.1
|
||||
container_name: mysql_container
|
||||
restart: always
|
||||
ports:
|
||||
- "${MYSQL_PORT}:3306"
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
||||
MYSQL_DATABASE: ${MYSQL_DATABASE}
|
||||
MYSQL_USER: ${MYSQL_USER}
|
||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
||||
volumes:
|
||||
- mysql_data:/var/lib/mysql
|
||||
- ./setup-mysql:/docker-entrypoint-initdb.d
|
||||
|
||||
|
||||
minio:
|
||||
image: minio/minio:latest
|
||||
container_name: minio_container
|
||||
restart: always
|
||||
ports:
|
||||
- "${MINIO_PORT}:9000"
|
||||
- "${MINIO_CONSOLE_PORT}:9001"
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
MINIO_ROOT_USER: ${MINIO_ROOT_USER}
|
||||
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}
|
||||
command: server /data --console-address ":${MINIO_CONSOLE_PORT}"
|
||||
volumes:
|
||||
- minio_data:/data
|
||||
|
||||
minio-init:
|
||||
image: minio/mc:latest
|
||||
depends_on:
|
||||
- minio
|
||||
env_file:
|
||||
- .env
|
||||
volumes:
|
||||
- ./setup-minio/init-minio.sh:/init-minio.sh
|
||||
entrypoint: [ "/bin/sh", "/init-minio.sh" ]
|
||||
|
||||
volumes:
|
||||
mysql_data:
|
||||
minio_data:
|
||||
|
||||
|
||||
13
infrastructure/setup-minio/init-minio.sh
Normal file
13
infrastructure/setup-minio/init-minio.sh
Normal file
@@ -0,0 +1,13 @@
|
||||
#!/bin/sh
|
||||
# Attendre que MinIO démarre
|
||||
echo "Waiting for MinIO to start..."
|
||||
sleep 10
|
||||
|
||||
# Créer un alias pour MinIO
|
||||
mc alias set localminio http://minio:9000 $MINIO_ROOT_USER $MINIO_ROOT_PASSWORD
|
||||
|
||||
# Créer le bucket (ignore erreur si existe déjà)
|
||||
mc mb localminio/bucketforum || true
|
||||
|
||||
# Définir une politique publique sur le bucket (optionnel)
|
||||
mc policy set public localminio/bucketforum
|
||||
33
infrastructure/setup-mysql/init-schema.sql
Normal file
33
infrastructure/setup-mysql/init-schema.sql
Normal file
@@ -0,0 +1,33 @@
|
||||
CREATE TABLE IF NOT EXISTS utilisateurs (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
username VARCHAR(50) NOT NULL UNIQUE,
|
||||
password VARCHAR(255) NOT NULL,
|
||||
email VARCHAR(100) UNIQUE,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS posts (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id INT NOT NULL,
|
||||
title VARCHAR(100) NOT NULL,
|
||||
content TEXT NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (user_id) REFERENCES utilisateurs(id)
|
||||
);
|
||||
|
||||
INSERT INTO utilisateurs (username, password, email)
|
||||
VALUES
|
||||
('aya', 'password123', 'ayae@example.com'),
|
||||
('tess', 'password456', 'tess@example.com');
|
||||
|
||||
INSERT INTO posts (user_id, title, content)
|
||||
VALUES
|
||||
(1, 'Bienvenue sur le forum', 'Ceci est le premier post !'),
|
||||
(2, 'Deuxième post', 'Un autre test pour vérifier la base.');
|
||||
ALTER TABLE posts
|
||||
DROP FOREIGN KEY posts_ibfk_1;
|
||||
|
||||
ALTER TABLE posts
|
||||
ADD CONSTRAINT posts_ibfk_1
|
||||
FOREIGN KEY (user_id) REFERENCES utilisateurs(id)
|
||||
ON DELETE CASCADE;
|
||||
Reference in New Issue
Block a user