Improve entrypoint to check if database is already provisioned

This commit is contained in:
Markus Opolka
2018-08-06 15:55:20 +02:00
committed by Markus Opolka
parent 4279818967
commit bef4ac9ae3
2 changed files with 62 additions and 38 deletions

View File

@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# Entrypoint for Docker Container
set -e
DB_TYPE=${DB_TYPE:-'mysql'} DB_TYPE=${DB_TYPE:-'mysql'}
DB_HOST=${DB_HOST:-'mysql'} DB_HOST=${DB_HOST:-'mysql'}
@@ -19,17 +19,13 @@ PUBLIC_URL=${PUBLIC_URL:-}
URL_FORMAT=${URL_FORMAT:-'path'} URL_FORMAT=${URL_FORMAT:-'path'}
# Check if DB_PASSWORD is set # Check if database is available
if [ -z "$DB_PASSWORD" ]; then until nc -z -v -w30 $DB_HOST $DB_PORT
echo >&2 'Error: Missing DB_PASSWORD' do
exit 1 echo "Info: Waiting for database connection..."
fi sleep 5
done
# Check if DB_PASSWORD is set
if [ -z "$ADMIN_PASSWORD" ]; then
echo >&2 'Error: Missing ADMIN_PASSWORD'
exit 1
fi
# Check if already provisioned # Check if already provisioned
if [ -f application/config/config.php ]; then if [ -f application/config/config.php ]; then
@@ -66,14 +62,30 @@ else
fi fi
fi fi
until nc -z -v -w30 $DB_HOST $DB_PORT
do
echo "Info: Waiting for database connection..."
sleep 5
done
echo 'Running console.php install' # Check if LimeSurvey database is provisioned
# Hint: The console.php script seems to always exit with 1, so that is why echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL || true php application/commands/console.php updatedb
if [ $? -eq 0 ]; then
echo 'Info: Database already provisioned'
else
# Check if DB_PASSWORD is set
if [ -z "$DB_PASSWORD" ]; then
echo >&2 'Error: Missing DB_PASSWORD'
exit 1
fi
# Check if DB_PASSWORD is set
if [ -z "$ADMIN_PASSWORD" ]; then
echo >&2 'Error: Missing ADMIN_PASSWORD'
exit 1
fi
echo ''
echo 'Running console.php install'
php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL
fi
exec "$@" exec "$@"

View File

@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# Entrypoint for Docker Container
set -e
DB_TYPE=${DB_TYPE:-'mysql'} DB_TYPE=${DB_TYPE:-'mysql'}
DB_HOST=${DB_HOST:-'mysql'} DB_HOST=${DB_HOST:-'mysql'}
@@ -19,17 +19,13 @@ PUBLIC_URL=${PUBLIC_URL:-}
URL_FORMAT=${URL_FORMAT:-'path'} URL_FORMAT=${URL_FORMAT:-'path'}
# Check if DB_PASSWORD is set # Check if database is available
if [ -z "$DB_PASSWORD" ]; then until nc -z -v -w30 $DB_HOST $DB_PORT
echo >&2 'Error: Missing DB_PASSWORD' do
exit 1 echo "Info: Waiting for database connection..."
fi sleep 5
done
# Check if DB_PASSWORD is set
if [ -z "$ADMIN_PASSWORD" ]; then
echo >&2 'Error: Missing ADMIN_PASSWORD'
exit 1
fi
# Check if already provisioned # Check if already provisioned
if [ -f application/config/config.php ]; then if [ -f application/config/config.php ]; then
@@ -66,14 +62,30 @@ else
fi fi
fi fi
until nc -z -v -w30 $DB_HOST $DB_PORT
do
echo "Info: Waiting for database connection..."
sleep 5
done
echo 'Running console.php install' # Check if LimeSurvey database is provisioned
# Hint: The console.php script seems to always exit with 1, so that is why echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL || true php application/commands/console.php updatedb
if [ $? -eq 0 ]; then
echo 'Info: Database already provisioned'
else
# Check if DB_PASSWORD is set
if [ -z "$DB_PASSWORD" ]; then
echo >&2 'Error: Missing DB_PASSWORD'
exit 1
fi
# Check if DB_PASSWORD is set
if [ -z "$ADMIN_PASSWORD" ]; then
echo >&2 'Error: Missing ADMIN_PASSWORD'
exit 1
fi
echo ''
echo 'Running console.php install'
php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL
fi
exec "$@" exec "$@"