Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Run Doctrine migrations automatically on container start

Aperta Adatta ai principianti
#309 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

@akramer-zibra ci sta già lavorando.

Dal 15/10/2026.

  • #310 di @akramer-zibra — aperta

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
Stack tecnologico
docker, php, shell

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

feature request
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 gate depends_on on 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

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di tchapi/davis

Tutte le issue di tchapi/davis

Issue simili

Altre issue su PHP

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.