Run Doctrine migrations automatically on container start
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 66/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Ambito
- devops, infrastructure
Direzione di ricerca
Inizia dal Dockerfile e dal Dockerfile-standalone nella radice del repository, e dalla directory docker/configurations/ dove risiederebbe il entrypoint.sh proposto. Verifica come viene eseguito bin/console con APP_ENV=prod. Aggiungi lo script, collegalo come ENTRYPOINT in entrambi i Dockerfile, quindi costruisci un'immagine e avvia un container per confermare che le migrazioni vengano eseguite prima che parta php-fpm o supervisord. È completato quando un container nuovo esegue le migrazioni e si avvia, e gli override di CMD con docker run continuano a essere passati.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem / motivation
Currently, after docker pull + restart, migrations must be run manually:
docker exec -it davis sh -c "APP_ENV=prod bin/console doctrine:migrations:migrate --no-interaction"
If this step is forgotten, Davis boots fine but fails in confusing ways (PROPPATCH errors, address books that won't create, etc.) instead of refusing to start. Time spend for upgrading would also decrease with this automation.
Proposed solution
Bake a minimal entrypoint.sh into both docker images that runs migrations before the server starts, then execs the normal process:
#!/bin/sh
set -e
php bin/console doctrine:migrations:migrate --no-interaction
exec "$@"
Wire it up in both Dockerfiles:
COPY ./docker/configurations/entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod +x /usr/local/bin/entrypoint.sh
# In Dockerfile
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["php-fpm"]
# In Dockerfile-standalone
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"] # Dockerfile-standalone
exec "$@" keeps it transparent to whatever CMD (or a docker run override) supplies.
Known limitations
- No DB-ready retry: if the database isn't accepting connections yet on first
docker-compose up, the migrate step fails fast and the container exits. Compose files don't currently gatedepends_onon a healthcheck. - No concurrency lock: if the image is ever scaled to multiple replicas, each would race to run migrations on start. Not an issue for the single-instance docker-compose setups in this repo.
Alternatives considered
No response
Area
Docker / deployment
Additional context
No response
- Lingua principale
- PHP
- Stelle
- 760
- Fork
- 45
- Merge medio
- 1g 14h
- PR unite (30g)
- 3
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di tchapi/davis
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
-
Add an updaterApertafeature request
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
-
feature request
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
-
feature request
Difficoltà 5/5 Più di una settimana Idoneità per principianti 45/100
Tutte le issue di tchapi/davis
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
0. Needs triage bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
nextcloud/fulltextsearch#1061 ·
I maintainer di solito rispondono entro 1 giorno
-
[Resource]: Claude KitApertaresource-submission validation-passed
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
hesreallyhim/awesome-claude-code#3375 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Settings → Proxy: an empty Port field saves as 0 and then shows "0" instead of the placeholderApertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
Codeinwp/feedzy-rss-feeds#1363 ·
I maintainer di solito rispondono entro 1 giorno
-
C-CDA export: allergy concern act code, policy activity translation and empty id/@extension fail conformanceForse già presa @doctorman l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno