From a6a1f7711ed42e53ecc866b275bcd798569cd613 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Tue, 24 Nov 2020 22:10:43 +0100 Subject: [PATCH] feat: add support for Doctrine ORM (#74) * feat: add support for Doctrine ORM * feat: wait for DB and handle migrations if necessary * feat: automatically use the MARIADB password * fix cs * feat: switch to postgres * feat: switch to Postgres --- docker-compose.yml | 2 ++ docker/php/docker-entrypoint.sh | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index 8aeb17d..b229a08 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -15,6 +15,8 @@ services: retries: 3 start_period: 30s environment: + # Run "composer require symfony/orm-pack" to install and configure Doctrine ORM + DATABASE_URL: postgresql://${POSTGRES_USER:-symfony}:${POSTGRES_PASSWORD:-ChangeMe}@db:5432/${POSTGRES_DB:-app}?serverVersion=${POSTGRES_VERSION:-13} SYMFONY_VERSION: caddy: diff --git a/docker/php/docker-entrypoint.sh b/docker/php/docker-entrypoint.sh index 4333f15..682ad3e 100755 --- a/docker/php/docker-entrypoint.sh +++ b/docker/php/docker-entrypoint.sh @@ -29,6 +29,27 @@ if [ "$1" = 'php-fpm' ] || [ "$1" = 'php' ] || [ "$1" = 'bin/console' ]; then composer install --prefer-dist --no-progress --no-suggest --no-interaction fi + if grep -q DATABASE_URL= .env; then + echo "Waiting for db to be ready..." + ATTEMPTS_LEFT_TO_REACH_DATABASE=60 + until [ $ATTEMPTS_LEFT_TO_REACH_DATABASE -eq 0 ] || bin/console doctrine:query:sql "SELECT 1" > /dev/null 2>&1; do + sleep 1 + ATTEMPTS_LEFT_TO_REACH_DATABASE=$((ATTEMPTS_LEFT_TO_REACH_DATABASE-1)) + echo "Still waiting for db to be ready... Or maybe the db is not reachable. $ATTEMPTS_LEFT_TO_REACH_DATABASE attempts left" + done + + if [ $ATTEMPTS_LEFT_TO_REACH_DATABASE -eq 0 ]; then + echo "The db is not up or not reachable" + exit 1 + else + echo "The db is now ready and reachable" + fi + + if ls -A migrations/*.php > /dev/null 2>&1; then + bin/console doctrine:migrations:migrate --no-interaction + fi + fi + setfacl -R -m u:www-data:rwX -m u:"$(whoami)":rwX var setfacl -dR -m u:www-data:rwX -m u:"$(whoami)":rwX var fi