Docker config update to fit project
This commit is contained in:
@@ -1,42 +1,42 @@
|
||||
x-app-common: &app-common
|
||||
image: netslim-app:latest
|
||||
build:
|
||||
context: .
|
||||
dockerfile: docker/php/Dockerfile
|
||||
volumes:
|
||||
# Répertoire public partagé avec Nginx.
|
||||
# L'entrypoint y synchronise index.php et les assets compilés.
|
||||
- ./data/public:/data/public
|
||||
|
||||
# Base SQLite persistée entre redéploiements.
|
||||
- ./data/database:/var/www/app/database
|
||||
|
||||
# Cache applicatif et logs persistés entre redémarrages.
|
||||
- ./data/var:/var/www/app/var
|
||||
|
||||
# Uploads utilisateurs.
|
||||
- ./data/public/media:/var/www/app/public/media
|
||||
|
||||
# phpdotenv requiert un fichier physique lisible depuis le conteneur.
|
||||
- ./.env:/var/www/app/.env:ro
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
TRUSTED_PROXIES: ${TRUSTED_PROXIES:-*}
|
||||
|
||||
services:
|
||||
app:
|
||||
image: netslim-app:latest
|
||||
build:
|
||||
context: .
|
||||
dockerfile: docker/php/Dockerfile
|
||||
<<: *app-common
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
# Répertoire de travail de l'entrypoint : reçoit public/ compilé,
|
||||
# puis partagé avec Nginx via le mount ci-dessous.
|
||||
- ./data:/data
|
||||
|
||||
# Base SQLite et migrations : persistés entre redéploiements.
|
||||
- ./data/database:/var/www/app/database
|
||||
|
||||
# Cache Twig/HTMLPurifier et logs : persistés entre redémarrages.
|
||||
- ./data/var:/var/www/app/var
|
||||
|
||||
# Uploads : PHP écrit dans public/media/, Nginx le sert en lecture seule.
|
||||
- ./data/public/media:/var/www/app/public/media
|
||||
|
||||
# phpdotenv requiert un fichier physique sur le disque (Dotenv::createImmutable) ;
|
||||
# `env_file` seul ne suffit pas car il injecte uniquement dans l'environnement
|
||||
# du process sans créer de fichier accessible via file_get_contents.
|
||||
- ./.env:/var/www/app/.env:ro
|
||||
|
||||
# Rend les variables accessibles via getenv() / $_SERVER en dehors de phpdotenv
|
||||
# (scripts CLI, healthchecks…).
|
||||
env_file: .env
|
||||
|
||||
# Vérifie que PHP-FPM écoute sur le port 9000 avant de déclarer le service sain.
|
||||
environment:
|
||||
TRUSTED_PROXIES: ${TRUSTED_PROXIES:-*}
|
||||
|
||||
# bash /dev/tcp est disponible sur l'image Debian php:8.4-fpm sans dépendance
|
||||
# supplémentaire. start_period laisse le temps à entrypoint.sh de terminer
|
||||
# (sync public/, permissions, caches) avant que les échecs ne comptent.
|
||||
# Vérifie que PHP-FPM écoute bien sur le port 9000.
|
||||
# Pas de dépendance à bash : on utilise PHP directement.
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "bash -c 'echo > /dev/tcp/localhost/9000'"]
|
||||
test:
|
||||
[
|
||||
"CMD-SHELL",
|
||||
"php -r '$s=@fsockopen(\"127.0.0.1\", 9000); if(!$s){exit(1);} fclose($s);'"
|
||||
]
|
||||
interval: 10s
|
||||
timeout: 3s
|
||||
retries: 3
|
||||
@@ -52,25 +52,14 @@ services:
|
||||
- "127.0.0.1:8888:80"
|
||||
volumes:
|
||||
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
|
||||
# Fichiers statiques servis directement par Nginx sans passer par PHP.
|
||||
|
||||
# Nginx sert directement le répertoire public synchronisé par l'entrypoint.
|
||||
- ./data/public:/var/www/app/public:ro
|
||||
|
||||
provision:
|
||||
image: netslim-app:latest
|
||||
<<: *app-common
|
||||
profiles: ["manual"]
|
||||
# Réutilise exactement la même image que `app` pour éviter tout écart entre
|
||||
# le runtime HTTP et le runtime de provisionnement.
|
||||
# Même environnement/fichiers que le runtime PHP pour provisionner exactement
|
||||
# la même base SQLite persistée.
|
||||
volumes:
|
||||
- ./data:/data
|
||||
- ./data/database:/var/www/app/database
|
||||
- ./data/var:/var/www/app/var
|
||||
- ./data/public/media:/var/www/app/public/media
|
||||
- ./.env:/var/www/app/.env:ro
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
TRUSTED_PROXIES: ${TRUSTED_PROXIES:-*}
|
||||
restart: "no"
|
||||
|
||||
# Réutilise exactement la même image que le runtime HTTP.
|
||||
command: ["php", "bin/provision.php"]
|
||||
|
||||
Reference in New Issue
Block a user