refactor : reorganize infra files into infra/dev and infra/prod

Consolidate Docker, Nginx, and deploy configs from 5 scattered directories
(docker/, deploy/docker/, deploy/nginx/, script/) into a single infra/ tree
with dev/ and prod/ subdirectories. Update all references in docker-compose,
Makefile, CI workflows, Dockerfiles, and documentation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-01 22:36:10 +02:00
parent b50cfb5049
commit 1ae9535516
23 changed files with 24 additions and 25 deletions

View File

@@ -2,10 +2,11 @@
.gitea .gitea
.env.local .env.local
.env.test .env.test
docker/ infra/dev/
deploy/docker/docker-compose.prod.yml infra/prod/docker-compose.yml
deploy/docker/deploy.sh infra/prod/deploy.sh
deploy/docker/.env.example infra/prod/deploy-release.sh
infra/prod/.env.example
frontend/node_modules frontend/node_modules
frontend/.nuxt frontend/.nuxt
frontend/.output frontend/.output

View File

@@ -60,7 +60,7 @@ JWT_COOKIE_TTL=86400
# Base de donnees (Doctrine / PostgreSQL) # 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. # et injectees automatiquement par Docker Compose.
# DATABASE_URL est construite a partir de ces variables. # 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" 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 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 # Ces variables sont lues par Docker Compose. Voir infra/dev/.env.docker
# pour les valeurs par defaut. Creez docker/.env.docker.local pour # pour les valeurs par defaut. Creez infra/dev/.env.docker.local pour
# surcharger localement. # surcharger localement.
# =========================================================================== # ===========================================================================

View File

@@ -19,7 +19,7 @@ jobs:
- name: Build Docker image - name: Build Docker image
run: | run: |
docker build \ 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:${{ gitea.ref_name }} \
-t gitea.malio.fr/malio-dev/lesstime:latest \ -t gitea.malio.fr/malio-dev/lesstime:latest \
. .

2
.gitignore vendored
View File

@@ -28,5 +28,5 @@
###< ide ### ###< ide ###
###> docker local ### ###> docker local ###
docker/.env.docker.local infra/dev/.env.docker.local
###< docker local ### ###< docker local ###

View File

@@ -125,7 +125,7 @@ Exemples : `feat : add login page`, `fix(auth) : prevent null token crash`
- Container PHP : `php-lesstime-fpm` - Container PHP : `php-lesstime-fpm`
- Container Nginx : `nginx-lesstime` - Container Nginx : `nginx-lesstime`
- Container DB : PostgreSQL sur port **5435** (interne et externe) - 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` - Après modif nginx : `docker restart nginx-lesstime`
## Fixtures ## Fixtures

View File

@@ -156,7 +156,7 @@ docker/ # Dockerfiles et config Nginx
| `nginx-lesstime` | 8082 | Nginx reverse proxy | | `nginx-lesstime` | 8082 | Nginx reverse proxy |
| PostgreSQL | 5435 | Base de données | | 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 ## API

View File

@@ -2,7 +2,7 @@ services:
php: php:
container_name: php-${DOCKER_APP_NAME}-fpm container_name: php-${DOCKER_APP_NAME}-fpm
build: build:
context: ./docker/php context: ./infra/dev
dockerfile: Dockerfile dockerfile: Dockerfile
args: args:
DOCKER_PHP_VERSION: ${DOCKER_PHP_VERSION} DOCKER_PHP_VERSION: ${DOCKER_PHP_VERSION}
@@ -21,8 +21,8 @@ services:
- ~/.cache:/var/www/.cache # Pour la cache de composer - ~/.cache:/var/www/.cache # Pour la cache de composer
- ~/.config:/var/www/.config # Pour la config de yarn - ~/.config:/var/www/.config # Pour la config de yarn
- ~/.composer:/var/www/.composer # Pour la config de composer - ~/.composer:/var/www/.composer # Pour la config de composer
- ./docker/php/config/php.ini:/usr/local/etc/php/php.ini - ./infra/dev/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/xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
- ./LOG:/var/www/html/LOG - ./LOG:/var/www/html/LOG
- uploads_data:/var/www/html/var/uploads - uploads_data:/var/www/html/var/uploads
extra_hosts: extra_hosts:
@@ -41,7 +41,7 @@ services:
- "8082:80" - "8082:80"
volumes: volumes:
- ./:/var/www/html:ro - ./:/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 restart: unless-stopped
db: db:
image: postgres:16-alpine image: postgres:16-alpine

View File

@@ -61,7 +61,7 @@ ENCRYPTION_KEY=<random-hex-32>
## 4. Installer le script de deploy ## 4. Installer le script de deploy
```bash ```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 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 ## 7. Configurer Nginx
```bash ```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 ln -sf /etc/nginx/sites-available/lesstime /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx sudo nginx -t && sudo systemctl reload nginx
``` ```

View File

@@ -59,8 +59,8 @@ RUN ln -sf /dev/stdout /var/log/nginx/access.log \
RUN rm -f /etc/nginx/sites-enabled/default RUN rm -f /etc/nginx/sites-enabled/default
# Configs # Configs
COPY deploy/docker/supervisord.conf /etc/supervisor/conf.d/app.conf COPY infra/prod/supervisord.conf /etc/supervisor/conf.d/app.conf
COPY deploy/docker/nginx.conf /etc/nginx/sites-enabled/lesstime.conf COPY infra/prod/nginx.conf /etc/nginx/sites-enabled/lesstime.conf
# Backend from stage 1 # Backend from stage 1
COPY --from=backend-build /app /var/www/html COPY --from=backend-build /app /var/www/html

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail 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 # Requires: curl, tar, (optional) rsync
# #
# Auth token: set RELEASE_TOKEN env var or create /etc/lesstime-release-token # Auth token: set RELEASE_TOKEN env var or create /etc/lesstime-release-token

View File

@@ -1,6 +1,6 @@
# Permet d'utiliser un .env.docker.local pour override # Permet d'utiliser un .env.docker.local pour override
ENV_DEFAULT = docker/.env.docker ENV_DEFAULT = infra/dev/.env.docker
ENV_LOCAL = docker/.env.docker.local ENV_LOCAL = infra/dev/.env.docker.local
ENV_FILE := $(if $(wildcard $(ENV_LOCAL)),$(ENV_LOCAL),$(ENV_DEFAULT)) ENV_FILE := $(if $(wildcard $(ENV_LOCAL)),$(ENV_LOCAL),$(ENV_DEFAULT))
# Permet d'avoir les variables du fichier .env.docker.local # Permet d'avoir les variables du fichier .env.docker.local
@@ -23,13 +23,11 @@ FILES =
#======================================================================================== #========================================================================================
env-init: env-init:
@mkdir -p docker
@cp --update=none $(ENV_DEFAULT) $(ENV_LOCAL) @cp --update=none $(ENV_DEFAULT) $(ENV_LOCAL)
# Lance le container # Lance le container
start: env-init start: env-init
@echo "**** START CONTAINERS ****" @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 CURRENT_UID=$(shell id -u) CURRENT_GID=$(shell id -g) $(DOCKER_COMPOSE) up -d
# Éteint le container # Éteint le container