diff --git a/Caddyfile b/Caddyfile new file mode 100644 index 0000000..8367583 --- /dev/null +++ b/Caddyfile @@ -0,0 +1,13 @@ +# Caddyfile + +wekan.localhost { + reverse_proxy wekan:8080 +} + +chat.localhost { + reverse_proxy rocketchat:3000 +} + +flask.localhost { + reverse_proxy flask:5000 +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..291ef0c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,70 @@ +services: + caddy: + image: caddy:latest + ports: + - "80:80" + - "443:443" + volumes: + - ./Caddyfile:/etc/caddy/Caddyfile + - caddy_data:/data + - caddy_config:/config + depends_on: + - flask + - wekan + - rocketchat + + flask: + build: ./flask-app + environment: + - DB_HOST=mariadb + - DB_USER=flaskuser + - DB_PASSWORD=flaskpass + - DB_NAME=flaskdb + depends_on: + - mariadb + volumes: + - ./flask-app:/app + + mariadb: + image: mariadb:latest + environment: + - MYSQL_ROOT_PASSWORD=rootpass + - MYSQL_DATABASE=flaskdb + - MYSQL_USER=flaskuser + - MYSQL_PASSWORD=flaskpass + volumes: + - mariadb_data:/var/lib/mysql + + wekan: + image: wekanteam/wekan + environment: + - MONGO_URL=mongodb://mongo:27017/wekan + - ROOT_URL=https://wekan.localhost + depends_on: + - mongo + + mongo: + image: mongo:latest + volumes: + - mongo_data:/data/db + + rocketchat: + image: rocketchat/rocket.chat:latest + environment: + - MONGO_URL=mongodb://mongo:27017/rocketchat + - ROOT_URL=https://chat.localhost + - PORT=3000 + ports: + - "3000:3000" + depends_on: + - mongo + - redis + + redis: + image: redis:latest + +volumes: + caddy_data: + caddy_config: + mariadb_data: + mongo_data: diff --git a/flask-app/Dockerfile b/flask-app/Dockerfile new file mode 100644 index 0000000..0b5c45c --- /dev/null +++ b/flask-app/Dockerfile @@ -0,0 +1,8 @@ +FROM python:3.11 + +WORKDIR /app +COPY . /app + +RUN pip install flask flask_sqlalchemy pymysql + +CMD ["python", "app.py"] diff --git a/flask-app/app.py b/flask-app/app.py new file mode 100644 index 0000000..d4e71a7 --- /dev/null +++ b/flask-app/app.py @@ -0,0 +1,16 @@ +# flask-app/app.py +from flask import Flask +from flask_sqlalchemy import SQLAlchemy + +app = Flask(__name__) +app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://flaskuser:flaskpass@mariadb/flaskdb' +app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False + +db = SQLAlchemy(app) + +@app.route('/') +def index(): + return 'Bienvenue sur l’intranet !' + +if __name__ == '__main__': + app.run(host='0.0.0.0') diff --git a/start-gesthub.sh b/start-gesthub.sh new file mode 100755 index 0000000..ad28472 --- /dev/null +++ b/start-gesthub.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +PROJECT_DOMAIN="gesthub" +HOSTS_LINE="127.0.0.1 flask.$PROJECT_DOMAIN wekan.$PROJECT_DOMAIN chat.$PROJECT_DOMAIN" + +echo "🔧 Vérification des droits (sudo peut être requis pour modifier /etc/hosts)..." + +# Ajout dans /etc/hosts si absent +if ! grep -q "$PROJECT_DOMAIN" /etc/hosts; then + echo "✅ Ajout de $PROJECT_DOMAIN dans /etc/hosts..." + echo "$HOSTS_LINE" | sudo tee -a /etc/hosts > /dev/null +else + echo "✔️ Domaine $PROJECT_DOMAIN déjà présent dans /etc/hosts." +fi + +echo "🚀 Lancement des services Docker..." +docker compose up --build diff --git a/start-infra.sh b/start-infra.sh new file mode 100755 index 0000000..ad28472 --- /dev/null +++ b/start-infra.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +PROJECT_DOMAIN="gesthub" +HOSTS_LINE="127.0.0.1 flask.$PROJECT_DOMAIN wekan.$PROJECT_DOMAIN chat.$PROJECT_DOMAIN" + +echo "🔧 Vérification des droits (sudo peut être requis pour modifier /etc/hosts)..." + +# Ajout dans /etc/hosts si absent +if ! grep -q "$PROJECT_DOMAIN" /etc/hosts; then + echo "✅ Ajout de $PROJECT_DOMAIN dans /etc/hosts..." + echo "$HOSTS_LINE" | sudo tee -a /etc/hosts > /dev/null +else + echo "✔️ Domaine $PROJECT_DOMAIN déjà présent dans /etc/hosts." +fi + +echo "🚀 Lancement des services Docker..." +docker compose up --build