L'utilisateur signale devoir recréer un compte admin après chaque
déploiement en prod. Cause : docker-compose.prod.yml ne montait un
volume que pour /app/projects (les jeux) — la base des comptes créateurs
(data/users.db, voir auth/connection.py) et la clé de session Flask
(data/secret_key, voir core/flask_app.py::_load_or_create_secret_key)
vivaient toutes les deux dans /app/data, jamais monté : chaque nouveau
conteneur (à chaque déploiement) repartait d'un /app/data vide, donc
d'une base de comptes vide ("premier compte = admin" recommençait à
zéro) ET d'une nouvelle clé de session (tout le monde déconnecté, en
plus de la perte du compte).
Nouveau volume nommé forge_data:/app/data, à côté de forge_projects.
docker-entrypoint.sh corrige aussi sa propriété (root par défaut à la
création d'un volume nommé, comme pour forge_projects déjà) avant
d'abandonner les privilèges root.
Note : ce correctif ne prend effet qu'au déploiement SUIVANT sur main
(le conteneur actuellement en prod n'a pas ce volume) — un dernier compte
admin à recréer après ce déploiement, plus jamais ensuite.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
30 lines
1.2 KiB
YAML
30 lines
1.2 KiB
YAML
services:
|
|
forge-engine:
|
|
image: ${REGISTRY_IMAGE:?REGISTRY_IMAGE is required}:${IMAGE_TAG:-latest}
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${PORT:-5050}:5050"
|
|
volumes:
|
|
- forge_projects:/app/projects
|
|
# Base des comptes créateurs (auth/connection.py, data/users.db) et
|
|
# clé de session Flask (core/flask_app.py, data/secret_key) —
|
|
# jusqu'ici ni l'un ni l'autre n'était persisté : chaque déploiement
|
|
# (nouveau conteneur) repartait d'un data/ vide, donc d'une base de
|
|
# comptes vide ("premier compte = admin" recommençait à zéro) et
|
|
# d'une nouvelle clé de session (tout le monde déconnecté).
|
|
- forge_data:/app/data
|
|
environment:
|
|
# Réinitialisation de mot de passe par email (voir auth/send_email.py)
|
|
# — laissés vides ici tant qu'ils ne sont pas définis dans le .env du
|
|
# serveur : l'appli continue de fonctionner sans, l'envoi d'email
|
|
# échoue juste silencieusement côté utilisateur (logué côté serveur).
|
|
SMTP_HOST: ${SMTP_HOST:-}
|
|
SMTP_PORT: ${SMTP_PORT:-587}
|
|
SMTP_USER: ${SMTP_USER:-}
|
|
SMTP_PASSWORD: ${SMTP_PASSWORD:-}
|
|
SMTP_FROM: ${SMTP_FROM:-}
|
|
|
|
volumes:
|
|
forge_projects:
|
|
forge_data:
|