cleanup docker environment variables (#5074)

This commit is contained in:
Kevin Papst
2024-10-03 14:27:33 +02:00
committed by GitHub
parent ee040d29b6
commit 52b949daa3
4 changed files with 31 additions and 63 deletions

View File

@@ -1,17 +1,17 @@
<?php <?php
$DB_HOST = urldecode($argv[1]); $DATABASE_HOST = urldecode($argv[1]);
$DB_BASE = urldecode($argv[2]); $DATABASE_BASE = urldecode($argv[2]);
$DB_PORT = $argv[3]; $DATABASE_PORT = $argv[3];
$DB_USER = urldecode($argv[4]); $DATABASE_USER = urldecode($argv[4]);
$DB_PASS = urldecode($argv[5]); $DATABASE_PASS = urldecode($argv[5]);
echo "Testing DB:"; echo "Testing DB:";
echo "*"; echo "*";
echo "* new \PDO(mysql:host=$DB_HOST;dbname=$DB_BASE;port=$DB_PORT, $DB_USER, $DB_PASS, [ \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION ]);"; echo "* new \PDO(mysql:host=$DATABASE_HOST;dbname=$DATABASE_BASE;port=$DATABASE_PORT, $DATABASE_USER, $DATABASE_PASS, [ \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION ]);";
echo "*"; echo "*";
try { try {
$pdo = new \PDO("mysql:host=$DB_HOST;dbname=$DB_BASE;port=$DB_PORT", "$DB_USER", "$DB_PASS", [ $pdo = new \PDO("mysql:host=$DATABASE_HOST;dbname=$DATABASE_BASE;port=$DATABASE_PORT", "$DATABASE_USER", "$DATABASE_PASS", [
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION
]); ]);
} catch(\Exception $ex) { } catch(\Exception $ex) {

View File

@@ -2,30 +2,19 @@
function waitForDB() { function waitForDB() {
# Parse sql connection data # Parse sql connection data
if [ ! -z "$DATABASE_URL" ]; then DATABASE_USER=$(awk -F '[/:@]' '{print $4}' <<< "$DATABASE_URL")
DB_TYPE=$(awk -F '[/:@]' '{print $1}' <<< "$DATABASE_URL") DATABASE_PASS=$(awk -F '[/:@]' '{print $5}' <<< "$DATABASE_URL")
DB_USER=$(awk -F '[/:@]' '{print $4}' <<< "$DATABASE_URL") DATABASE_HOST=$(awk -F '[/:@]' '{print $6}' <<< "$DATABASE_URL")
DB_PASS=$(awk -F '[/:@]' '{print $5}' <<< "$DATABASE_URL") DATABASE_PORT=$(awk -F '[/:@]' '{print $7}' <<< "$DATABASE_URL")
DB_HOST=$(awk -F '[/:@]' '{print $6}' <<< "$DATABASE_URL") DATABASE_BASE=$(awk -F '[/?]' '{print $4}' <<< "$DATABASE_URL")
DB_PORT=$(awk -F '[/:@]' '{print $7}' <<< "$DATABASE_URL")
DB_BASE=$(awk -F '[/?]' '{print $4}' <<< "$DATABASE_URL")
else
DB_TYPE=${DB_TYPE:mysql}
if [ "$DB_TYPE" == "mysql" ]; then
export DATABASE_URL="${DB_TYPE}://${DB_USER:=kimai}:${DB_PASS:=kimai}@${DB_HOST:=sqldb}:${DB_PORT:=3306}/${DB_BASE:=kimai}"
else
echo "Unknown database type, cannot proceed. Only 'mysql' is supported, received: [$DB_TYPE]"
exit 1
fi
fi
re='^[0-9]+$' re='^[0-9]+$'
if ! [[ $DB_PORT =~ $re ]] ; then if ! [[ $DATABASE_PORT =~ $re ]] ; then
DB_PORT=3306 DATABASE_PORT=3306
fi fi
echo "Wait for MySQL DB connection ..." echo "Wait for database connection ..."
until php /dbtest.php $DB_HOST $DB_BASE $DB_PORT $DB_USER $DB_PASS; do until php /dbtest.php "$DATABASE_HOST" "$DATABASE_BASE" "$DATABASE_PORT" "$DATABASE_USER" "$DATABASE_PASS"; do
echo Checking DB: $? echo Checking DB: $?
sleep 3 sleep 3
done done
@@ -33,14 +22,14 @@ function waitForDB() {
} }
function handleStartup() { function handleStartup() {
# These are idempotent, run them anyway # These are idempotent, so we can run them on every start-up
/opt/kimai/bin/console -n kimai:install /opt/kimai/bin/console -n kimai:install
/opt/kimai/bin/console -n kimai:update /opt/kimai/bin/console -n kimai:update
if [ ! -z "$ADMINPASS" ] && [ ! -a "$ADMINMAIL" ]; then if [ ! -z "$ADMINPASS" ] && [ ! -a "$ADMINMAIL" ]; then
/opt/kimai/bin/console kimai:user:create superadmin "$ADMINMAIL" ROLE_SUPER_ADMIN "$ADMINPASS" /opt/kimai/bin/console kimai:user:create admin "$ADMINMAIL" ROLE_SUPER_ADMIN "$ADMINPASS"
fi fi
echo "$KIMAI" > /opt/kimai/var/installed echo "$KIMAI" > /opt/kimai/var/installed
echo "Kimai2 ready" echo "Kimai is ready"
} }
function runServer() { function runServer() {

View File

@@ -3,39 +3,25 @@
KIMAI=$(cat /opt/kimai/version.txt) KIMAI=$(cat /opt/kimai/version.txt)
echo $KIMAI echo $KIMAI
function config() { function config() {
# set mem limits and copy in custom logger config # set mem limits and copy in custom logger config
if [ -z "$memory_limit" ]; then if [ -z "$memory_limit" ]; then
memory_limit=256M memory_limit=256M
fi fi
DATABASE_USER=$(awk -F '[/:@]' '{print $4}' <<< "$DATABASE_URL")
# Parse sql connection data DATABASE_PASS=$(awk -F '[/:@]' '{print $5}' <<< "$DATABASE_URL")
if [ ! -z "$DATABASE_URL" ]; then DATABASE_HOST=$(awk -F '[/:@]' '{print $6}' <<< "$DATABASE_URL")
DB_TYPE=$(awk -F '[/:@]' '{print $1}' <<< "$DATABASE_URL") DATABASE_PORT=$(awk -F '[/:@]' '{print $7}' <<< "$DATABASE_URL")
DB_USER=$(awk -F '[/:@]' '{print $4}' <<< "$DATABASE_URL") DATABASE_BASE=$(awk -F '[/?]' '{print $4}' <<< "$DATABASE_URL")
DB_PASS=$(awk -F '[/:@]' '{print $5}' <<< "$DATABASE_URL")
DB_HOST=$(awk -F '[/:@]' '{print $6}' <<< "$DATABASE_URL")
DB_PORT=$(awk -F '[/:@]' '{print $7}' <<< "$DATABASE_URL")
DB_BASE=$(awk -F '[/?]' '{print $4}' <<< "$DATABASE_URL")
else
DB_TYPE=${DB_TYPE:mysql}
if [ "$DB_TYPE" == "mysql" ]; then
export DATABASE_URL="${DB_TYPE}://${DB_USER:=kimai}:${DB_PASS:=kimai}@${DB_HOST:=sqldb}:${DB_PORT:=3306}/${DB_BASE:=kimai}"
else
echo "Unknown database type, cannot proceed. Only 'mysql' is supported, received: [$DB_TYPE]"
exit 1
fi
fi
re='^[0-9]+$' re='^[0-9]+$'
if ! [[ $DB_PORT =~ $re ]] ; then if ! [[ $DATABASE_PORT =~ $re ]] ; then
DB_PORT=3306 DATABASE_PORT=3306
fi fi
echo "Wait for MySQL DB connection ..." echo "Wait for database connection ..."
until php /dbtest.php $DB_HOST $DB_BASE $DB_PORT $DB_USER $DB_PASS; do until php /dbtest.php "$DATABASE_HOST" "$DATABASE_BASE" "$DATABASE_PORT" "$DATABASE_USER" "$DATABASE_PASS"; do
echo Checking DB: $? echo Checking DB: $?
sleep 3 sleep 3
done done

View File

@@ -79,18 +79,11 @@ ENV MAILER_FROM=kimai@example.com
ENV MAILER_URL=null://localhost ENV MAILER_URL=null://localhost
ENV ADMINPASS= ENV ADMINPASS=
ENV ADMINMAIL= ENV ADMINMAIL=
ENV DB_TYPE=
ENV DB_USER=
ENV DB_PASS=
ENV DB_HOST=
ENV DB_PORT=
ENV DB_BASE=
ENV COMPOSER_MEMORY_LIMIT=-1
# If this set then the image will start, run a self test and then exit. It's used for the release process
ENV TEST_AND_EXIT=
ENV COMPOSER_ALLOW_SUPERUSER=1
ENV USER_ID= ENV USER_ID=
ENV GROUP_ID= ENV GROUP_ID=
# default values to configure composer behavior
ENV COMPOSER_MEMORY_LIMIT=-1
ENV COMPOSER_ALLOW_SUPERUSER=1
VOLUME [ "/opt/kimai/var" ] VOLUME [ "/opt/kimai/var" ]