diff --git a/.dockerignore b/.dockerignore index dbb6194..be5861d 100644 --- a/.dockerignore +++ b/.dockerignore @@ -2,10 +2,11 @@ .gitea .env.local .env.test -docker/ -deploy/docker/docker-compose.prod.yml -deploy/docker/deploy.sh -deploy/docker/.env.example +infra/dev/ +infra/prod/docker-compose.yml +infra/prod/deploy.sh +infra/prod/deploy-release.sh +infra/prod/.env.example frontend/node_modules frontend/.nuxt frontend/.output diff --git a/.env.example b/.env.example index 55794b5..9627e79 100644 --- a/.env.example +++ b/.env.example @@ -60,7 +60,7 @@ JWT_COOKIE_TTL=86400 # Base de donnees (Doctrine / PostgreSQL) # =========================================================================== -# Les variables POSTGRES_* sont definies dans docker/.env.docker +# Les variables POSTGRES_* sont definies dans infra/dev/.env.docker # et injectees automatiquement par Docker Compose. # DATABASE_URL est construite a partir de ces variables. DATABASE_URL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:${POSTGRES_PORT}/${POSTGRES_DB}?serverVersion=16&charset=utf8" @@ -74,10 +74,10 @@ DATABASE_URL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:${POSTGRES_P ENCRYPTION_KEY=change_me_in_env_local # =========================================================================== -# Docker (docker/.env.docker) +# Docker (infra/dev/.env.docker) # -# Ces variables sont lues par Docker Compose. Voir docker/.env.docker -# pour les valeurs par defaut. Creez docker/.env.docker.local pour +# Ces variables sont lues par Docker Compose. Voir infra/dev/.env.docker +# pour les valeurs par defaut. Creez infra/dev/.env.docker.local pour # surcharger localement. # =========================================================================== diff --git a/.gitea/workflows/build-docker.yml b/.gitea/workflows/build-docker.yml index 978c370..2b0b3f8 100644 --- a/.gitea/workflows/build-docker.yml +++ b/.gitea/workflows/build-docker.yml @@ -19,7 +19,7 @@ jobs: - name: Build Docker image run: | docker build \ - -f deploy/docker/Dockerfile.prod \ + -f infra/prod/Dockerfile \ -t gitea.malio.fr/malio-dev/lesstime:${{ gitea.ref_name }} \ -t gitea.malio.fr/malio-dev/lesstime:latest \ . diff --git a/.gitignore b/.gitignore index 1e60d19..9e182e1 100644 --- a/.gitignore +++ b/.gitignore @@ -28,5 +28,5 @@ ###< ide ### ###> docker local ### -docker/.env.docker.local +infra/dev/.env.docker.local ###< docker local ### diff --git a/CLAUDE.md b/CLAUDE.md index a2ec8d0..1e7d968 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -125,7 +125,7 @@ Exemples : `feat : add login page`, `fix(auth) : prevent null token crash` - Container PHP : `php-lesstime-fpm` - Container Nginx : `nginx-lesstime` - Container DB : PostgreSQL sur port **5435** (interne et externe) -- Config Docker : `docker/.env.docker` (override local : `docker/.env.docker.local`) +- Config Docker : `infra/dev/.env.docker` (override local : `infra/dev/.env.docker.local`) - Après modif nginx : `docker restart nginx-lesstime` ## Fixtures diff --git a/README.md b/README.md index 470e6cf..17a7a59 100644 --- a/README.md +++ b/README.md @@ -156,7 +156,7 @@ docker/ # Dockerfiles et config Nginx | `nginx-lesstime` | 8082 | Nginx reverse proxy | | PostgreSQL | 5435 | Base de données | -Configuration : `docker/.env.docker` (override local : `docker/.env.docker.local`) +Configuration : `infra/dev/.env.docker` (override local : `infra/dev/.env.docker.local`) ## API diff --git a/docker-compose.yml b/docker-compose.yml index 1b275f6..642b9f9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,7 +2,7 @@ services: php: container_name: php-${DOCKER_APP_NAME}-fpm build: - context: ./docker/php + context: ./infra/dev dockerfile: Dockerfile args: DOCKER_PHP_VERSION: ${DOCKER_PHP_VERSION} @@ -21,8 +21,8 @@ services: - ~/.cache:/var/www/.cache # Pour la cache de composer - ~/.config:/var/www/.config # Pour la config de yarn - ~/.composer:/var/www/.composer # Pour la config de composer - - ./docker/php/config/php.ini:/usr/local/etc/php/php.ini - - ./docker/php/config/docker-php-ext-xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini + - ./infra/dev/php.ini:/usr/local/etc/php/php.ini + - ./infra/dev/xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini - ./LOG:/var/www/html/LOG - uploads_data:/var/www/html/var/uploads extra_hosts: @@ -41,7 +41,7 @@ services: - "8082:80" volumes: - ./:/var/www/html:ro - - ./docker/nginx/conf.d:/etc/nginx/conf.d:ro + - ./infra/dev/nginx.conf:/etc/nginx/conf.d/lesstime.conf:ro restart: unless-stopped db: image: postgres:16-alpine diff --git a/docs/deploy.md b/docs/deploy.md index 740eb04..f5a4c3a 100644 --- a/docs/deploy.md +++ b/docs/deploy.md @@ -61,7 +61,7 @@ ENCRYPTION_KEY= ## 4. Installer le script de deploy ```bash -sudo cp script/deploy-release.sh /usr/local/bin/deploy-lesstime +sudo cp infra/prod/deploy-release.sh /usr/local/bin/deploy-lesstime sudo chmod +x /usr/local/bin/deploy-lesstime ``` @@ -89,7 +89,7 @@ sudo -u www-data php bin/console lexik:jwt:generate-keypair --skip-if-exists --e ## 7. Configurer Nginx ```bash -sudo cp deploy/nginx/lesstime.conf /etc/nginx/sites-available/lesstime +sudo cp infra/prod/nginx-baremetal.conf /etc/nginx/sites-available/lesstime sudo ln -sf /etc/nginx/sites-available/lesstime /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx ``` diff --git a/docker/.env.docker b/infra/dev/.env.docker similarity index 100% rename from docker/.env.docker rename to infra/dev/.env.docker diff --git a/docker/php/Dockerfile b/infra/dev/Dockerfile similarity index 100% rename from docker/php/Dockerfile rename to infra/dev/Dockerfile diff --git a/docker/nginx/conf.d/lesstime.conf b/infra/dev/nginx.conf similarity index 100% rename from docker/nginx/conf.d/lesstime.conf rename to infra/dev/nginx.conf diff --git a/docker/php/config/php.ini b/infra/dev/php.ini similarity index 100% rename from docker/php/config/php.ini rename to infra/dev/php.ini diff --git a/docker/php/config/docker-php-ext-xdebug.ini b/infra/dev/xdebug.ini similarity index 100% rename from docker/php/config/docker-php-ext-xdebug.ini rename to infra/dev/xdebug.ini diff --git a/deploy/docker/.env.example b/infra/prod/.env.example similarity index 100% rename from deploy/docker/.env.example rename to infra/prod/.env.example diff --git a/deploy/docker/Dockerfile.prod b/infra/prod/Dockerfile similarity index 94% rename from deploy/docker/Dockerfile.prod rename to infra/prod/Dockerfile index 40f0f86..520f584 100644 --- a/deploy/docker/Dockerfile.prod +++ b/infra/prod/Dockerfile @@ -59,8 +59,8 @@ RUN ln -sf /dev/stdout /var/log/nginx/access.log \ RUN rm -f /etc/nginx/sites-enabled/default # Configs -COPY deploy/docker/supervisord.conf /etc/supervisor/conf.d/app.conf -COPY deploy/docker/nginx.conf /etc/nginx/sites-enabled/lesstime.conf +COPY infra/prod/supervisord.conf /etc/supervisor/conf.d/app.conf +COPY infra/prod/nginx.conf /etc/nginx/sites-enabled/lesstime.conf # Backend from stage 1 COPY --from=backend-build /app /var/www/html diff --git a/script/deploy-release.sh b/infra/prod/deploy-release.sh similarity index 98% rename from script/deploy-release.sh rename to infra/prod/deploy-release.sh index d050254..86d656b 100755 --- a/script/deploy-release.sh +++ b/infra/prod/deploy-release.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -euo pipefail -# Usage: ./script/deploy-release.sh v0.1.0 +# Usage: ./infra/prod/deploy-release.sh v0.1.0 # Requires: curl, tar, (optional) rsync # # Auth token: set RELEASE_TOKEN env var or create /etc/lesstime-release-token diff --git a/deploy/docker/deploy.sh b/infra/prod/deploy.sh similarity index 100% rename from deploy/docker/deploy.sh rename to infra/prod/deploy.sh diff --git a/deploy/docker/docker-compose.prod.yml b/infra/prod/docker-compose.yml similarity index 100% rename from deploy/docker/docker-compose.prod.yml rename to infra/prod/docker-compose.yml diff --git a/deploy/nginx/lesstime.conf b/infra/prod/nginx-baremetal.conf similarity index 100% rename from deploy/nginx/lesstime.conf rename to infra/prod/nginx-baremetal.conf diff --git a/deploy/nginx/lesstime-docker.conf b/infra/prod/nginx-proxy.conf similarity index 100% rename from deploy/nginx/lesstime-docker.conf rename to infra/prod/nginx-proxy.conf diff --git a/deploy/docker/nginx.conf b/infra/prod/nginx.conf similarity index 100% rename from deploy/docker/nginx.conf rename to infra/prod/nginx.conf diff --git a/deploy/docker/supervisord.conf b/infra/prod/supervisord.conf similarity index 100% rename from deploy/docker/supervisord.conf rename to infra/prod/supervisord.conf diff --git a/makefile b/makefile index 2384ffb..16c8944 100644 --- a/makefile +++ b/makefile @@ -1,6 +1,6 @@ # Permet d'utiliser un .env.docker.local pour override -ENV_DEFAULT = docker/.env.docker -ENV_LOCAL = docker/.env.docker.local +ENV_DEFAULT = infra/dev/.env.docker +ENV_LOCAL = infra/dev/.env.docker.local ENV_FILE := $(if $(wildcard $(ENV_LOCAL)),$(ENV_LOCAL),$(ENV_DEFAULT)) # Permet d'avoir les variables du fichier .env.docker.local @@ -23,13 +23,11 @@ FILES = #======================================================================================== env-init: - @mkdir -p docker @cp --update=none $(ENV_DEFAULT) $(ENV_LOCAL) # Lance le container start: env-init @echo "**** START CONTAINERS ****" - @cp --update=none docker/.env.docker docker/.env.docker.local CURRENT_UID=$(shell id -u) CURRENT_GID=$(shell id -g) $(DOCKER_COMPOSE) up -d # Éteint le container