From 5ea6e25e271ef0b1d6ff5ef901076597f62c4a2e Mon Sep 17 00:00:00 2001 From: Achim Date: Thu, 15 Oct 2026 17:09:13 +0200 Subject: [PATCH 1/3] Add an entrypoint.sh which runs doctrine migrations on docker container start --- docker/Dockerfile | 6 ++++++ docker/Dockerfile-standalone | 4 ++++ docker/configurations/entrypoint.sh | 6 ++++++ 3 files changed, 16 insertions(+) create mode 100644 docker/configurations/entrypoint.sh diff --git a/docker/Dockerfile b/docker/Dockerfile index b61eca4..cd9b62d 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -107,6 +107,12 @@ RUN APP_ENV=prod COMPOSER_ALLOW_SUPERUSER=1 composer install --no-ansi --no-dev # otherwise PHP-FPM can neither write its cache nor its logs (500 on every request, and no log to tell) RUN mkdir -p var/log var/cache && chown -R ${FPM_USER} var +COPY ./docker/configurations/entrypoint.sh /usr/local/bin/entrypoint.sh +RUN chmod +x /usr/local/bin/entrypoint.sh + USER $FPM_USER HEALTHCHECK --interval=30s --timeout=1s CMD ["php-fpm-healthcheck"] + +ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] +CMD ["php-fpm"] diff --git a/docker/Dockerfile-standalone b/docker/Dockerfile-standalone index 07dc0c8..34c6ac9 100644 --- a/docker/Dockerfile-standalone +++ b/docker/Dockerfile-standalone @@ -111,10 +111,14 @@ RUN mkdir /var/run/php-fpm && chown -R www-data:www-data /var/run/php-fpm \ RUN mkdir -p ./var/log ./var/cache && chown -R www-data:www-data ./var +COPY ./docker/configurations/entrypoint.sh /usr/local/bin/entrypoint.sh +RUN chmod +x /usr/local/bin/entrypoint.sh + # Cleanup (only useful when using --squash) RUN docker-php-source delete && \ rm -rf /var/www/davis/docker +ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"] HEALTHCHECK --interval=120s --timeout=10s --start-period=60s --retries=3 \ diff --git a/docker/configurations/entrypoint.sh b/docker/configurations/entrypoint.sh new file mode 100644 index 0000000..1df4371 --- /dev/null +++ b/docker/configurations/entrypoint.sh @@ -0,0 +1,6 @@ +#!/bin/sh +set -e + +php bin/console doctrine:migrations:migrate --no-interaction + +exec "$@" From ca83f2154655207ccc60c23e9994175804cbcf97 Mon Sep 17 00:00:00 2001 From: Achim Date: Thu, 15 Oct 2026 17:14:36 +0200 Subject: [PATCH 2/3] Add docker healthchecks to depending database services --- docker/docker-compose-postgresql.yml | 8 +++++++- docker/docker-compose-standalone.yml | 8 +++++++- docker/docker-compose.yml | 8 +++++++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/docker/docker-compose-postgresql.yml b/docker/docker-compose-postgresql.yml index bd0a152..c26be72 100644 --- a/docker/docker-compose-postgresql.yml +++ b/docker/docker-compose-postgresql.yml @@ -26,6 +26,11 @@ services: - POSTGRES_USER=${DB_USER} volumes: - database_pg:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready"] + interval: 10s + timeout: 5s + retries: 5 davis: build: @@ -41,7 +46,8 @@ services: - DATABASE_URL=postgresql://${DB_USER}:${DB_PASSWORD}@postgresql:5432/${DB_DATABASE}?serverVersion=15&charset=UTF-8 - MAILER_DSN=smtp://${MAIL_USERNAME}:${MAIL_PASSWORD}@${MAIL_HOST}:${MAIL_PORT} depends_on: - - postgresql + postgresql: + condition: service_healthy volumes: - davis_www:/var/www/davis diff --git a/docker/docker-compose-standalone.yml b/docker/docker-compose-standalone.yml index af42c68..ad8b74b 100644 --- a/docker/docker-compose-standalone.yml +++ b/docker/docker-compose-standalone.yml @@ -13,6 +13,11 @@ services: - MYSQL_PASSWORD=${DB_PASSWORD} volumes: - database:/var/lib/mysql + healthcheck: + test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] + interval: 10s + timeout: 5s + retries: 5 davis: build: @@ -28,7 +33,8 @@ services: - DATABASE_URL=mysql://${DB_USER}:${DB_PASSWORD}@mysql:3306/${DB_DATABASE}?serverVersion=mariadb-10.6.10&charset=utf8mb4 - MAILER_DSN=smtp://${MAIL_USERNAME}:${MAIL_PASSWORD}@${MAIL_HOST}:${MAIL_PORT} depends_on: - - mysql + mysql: + condition: service_healthy ports: - 9000:9000 diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 9a1a8f6..501bcac 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -27,6 +27,11 @@ services: - MYSQL_PASSWORD=${DB_PASSWORD} volumes: - database:/var/lib/mysql + healthcheck: + test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] + interval: 10s + timeout: 5s + retries: 5 davis: build: @@ -44,7 +49,8 @@ services: - DATABASE_URL=mysql://${DB_USER}:${DB_PASSWORD}@mysql:3306/${DB_DATABASE}?serverVersion=mariadb-10.6.10&charset=utf8mb4 - MAILER_DSN=smtp://${MAIL_USERNAME}:${MAIL_PASSWORD}@${MAIL_HOST}:${MAIL_PORT} depends_on: - - mysql + mysql: + condition: service_healthy volumes: - davis_www:/var/www/davis From a1c51e88b3b309593acdc857fe2220db8049acec Mon Sep 17 00:00:00 2001 From: Achim Date: Thu, 15 Oct 2026 17:22:19 +0200 Subject: [PATCH 3/3] Add password support for docker healthcheck on mysql database container --- docker/docker-compose-standalone.yml | 2 +- docker/docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/docker-compose-standalone.yml b/docker/docker-compose-standalone.yml index ad8b74b..8e81b5d 100644 --- a/docker/docker-compose-standalone.yml +++ b/docker/docker-compose-standalone.yml @@ -14,7 +14,7 @@ services: volumes: - database:/var/lib/mysql healthcheck: - test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] + test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${DB_ROOT_PASSWORD}"] interval: 10s timeout: 5s retries: 5 diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 501bcac..6424963 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -28,7 +28,7 @@ services: volumes: - database:/var/lib/mysql healthcheck: - test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] + test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${DB_ROOT_PASSWORD}"] interval: 10s timeout: 5s retries: 5