mirror of
https://github.com/mykitserver/docker-limesurvey.git
synced 2025-12-06 16:39:11 +01:00
Otherwise, if the replaced port number contains "80" (for example, "8080", as is now the default), it is replaced over and over on each activation
126 lines
3.0 KiB
Bash
Executable File
126 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# Entrypoint for Docker Container
|
|
|
|
|
|
DB_TYPE=${DB_TYPE:-'mysql'}
|
|
DB_HOST=${DB_HOST:-'mysql'}
|
|
DB_PORT=${DB_PORT:-'3306'}
|
|
DB_SOCK=${DB_SOCK:-}
|
|
DB_NAME=${DB_NAME:-'limesurvey'}
|
|
DB_TABLE_PREFIX=${DB_TABLE_PREFIX:-'lime_'}
|
|
DB_USERNAME=${DB_USERNAME:-'limesurvey'}
|
|
DB_PASSWORD=${DB_PASSWORD:-}
|
|
|
|
ADMIN_USER=${ADMIN_USER:-'admin'}
|
|
ADMIN_NAME=${ADMIN_NAME:-'admin'}
|
|
ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'}
|
|
ADMIN_PASSWORD=${ADMIN_PASSWORD:-}
|
|
|
|
BASE_URL=${BASE_URL:-}
|
|
PUBLIC_URL=${PUBLIC_URL:-}
|
|
URL_FORMAT=${URL_FORMAT:-'path'}
|
|
|
|
DEBUG=${DEBUG:-0}
|
|
DEBUG_SQL=${DEBUG_SQL:-0}
|
|
|
|
LISTEN_PORT=${LISTEN_PORT:-"80"}
|
|
|
|
if [ -z "$DB_PASSWORD" ]; then
|
|
echo >&2 'Error: Missing DB_PASSWORD'
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$ADMIN_PASSWORD" ]; then
|
|
echo >&2 'Error: Missing ADMIN_PASSWORD'
|
|
exit 1
|
|
fi
|
|
|
|
if [ "$LISTEN_PORT" != "80" ]; then
|
|
echo "Info: Customizing Apache Listen port to $LISTEN_PORT"
|
|
sed -i "s/Listen 80\$/Listen $LISTEN_PORT/" /etc/apache2/ports.conf /etc/apache2/sites-available/000-default.conf
|
|
fi
|
|
|
|
# Check if database is available
|
|
if [ -z "$DB_SOCK" ]; then
|
|
until nc -z -v -w30 $DB_HOST $DB_PORT
|
|
do
|
|
echo "Info: Waiting for database connection..."
|
|
sleep 5
|
|
done
|
|
fi
|
|
|
|
# Check if config already provisioned
|
|
if [ -f application/config/config.php ]; then
|
|
echo 'Info: config.php already provisioned'
|
|
else
|
|
echo 'Info: Generating config.php'
|
|
|
|
if [ "$DB_TYPE" = 'mysql' ]; then
|
|
echo 'Info: Using MySQL configuration'
|
|
DB_CHARSET=${DB_CHARSET:-'utf8mb4'}
|
|
fi
|
|
|
|
if [ "$DB_TYPE" = 'pgsql' ]; then
|
|
echo 'Info: Using PostgreSQL configuration'
|
|
DB_CHARSET=${DB_CHARSET:-'utf8'}
|
|
fi
|
|
|
|
if [ ! -z "$DB_SOCK" ]; then
|
|
echo 'Info: Using unix socket'
|
|
DB_CONNECT='unix_socket'
|
|
else
|
|
echo 'Info: Using TCP connection'
|
|
DB_CONNECT='host'
|
|
fi
|
|
|
|
if [ -z "$PUBLIC_URL" ]; then
|
|
echo 'Info: Setting PublicURL'
|
|
fi
|
|
|
|
cat <<EOF > application/config/config.php
|
|
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
|
|
return array(
|
|
'components' => array(
|
|
'db' => array(
|
|
'connectionString' => '$DB_TYPE:$DB_CONNECT=$DB_HOST;port=$DB_PORT;dbname=$DB_NAME;',
|
|
'emulatePrepare' => true,
|
|
'username' => '$DB_USERNAME',
|
|
'password' => '$DB_PASSWORD',
|
|
'charset' => '$DB_CHARSET',
|
|
'tablePrefix' => '$DB_TABLE_PREFIX',
|
|
),
|
|
'urlManager' => array(
|
|
'urlFormat' => '$URL_FORMAT',
|
|
'rules' => array(),
|
|
'showScriptName' => true,
|
|
),
|
|
'request' => array(
|
|
'baseUrl' => '$BASE_URL',
|
|
),
|
|
),
|
|
'config'=>array(
|
|
'publicurl'=>'$PUBLIC_URL',
|
|
'debug'=>$DEBUG,
|
|
'debugsql'=>$DEBUG_SQL,
|
|
)
|
|
);
|
|
|
|
EOF
|
|
|
|
fi
|
|
|
|
|
|
# Check if LimeSurvey database is provisioned
|
|
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
|
|
php application/commands/console.php updatedb
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo 'Info: Database already provisioned'
|
|
else
|
|
echo ''
|
|
echo 'Running console.php install'
|
|
php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL
|
|
fi
|
|
|
|
exec "$@"
|