mirror of
https://github.com/mykitserver/docker-limesurvey.git
synced 2025-12-06 16:39:11 +01:00
Add entrypoint for Container
- Adds config.php if not available - Runs console.php for installation
This commit is contained in:
@@ -12,6 +12,7 @@ RUN apt-get update && \
|
|||||||
libkrb5-dev \
|
libkrb5-dev \
|
||||||
libpng-dev \
|
libpng-dev \
|
||||||
libpq-dev \
|
libpq-dev \
|
||||||
|
netcat \
|
||||||
&& apt-get autoclean; apt-get autoremove && \
|
&& apt-get autoclean; apt-get autoremove && \
|
||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
@@ -38,3 +39,7 @@ ADD "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" /tmp
|
|||||||
RUN tar xzvf "/tmp/${version}.tar.gz" --strip-components=1 -C /var/www/html/ && \
|
RUN tar xzvf "/tmp/${version}.tar.gz" --strip-components=1 -C /var/www/html/ && \
|
||||||
rm "/tmp/${version}.tar.gz" && \
|
rm "/tmp/${version}.tar.gz" && \
|
||||||
chown -R www-data:www-data /var/www/html
|
chown -R www-data:www-data /var/www/html
|
||||||
|
|
||||||
|
COPY entrypoint.sh entrypoint.sh
|
||||||
|
ENTRYPOINT ["/var/www/html/entrypoint.sh"]
|
||||||
|
CMD ["apache2-foreground"]
|
||||||
|
|||||||
1
apache/entrypoint.sh
Symbolic link
1
apache/entrypoint.sh
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../entrypoint.sh
|
||||||
@@ -12,6 +12,10 @@ services:
|
|||||||
- lime-db
|
- lime-db
|
||||||
ports:
|
ports:
|
||||||
- "8080:80"
|
- "8080:80"
|
||||||
|
environment:
|
||||||
|
- "DB_HOST=docker-limesurvey_lime-db_1"
|
||||||
|
- "DB_PASSWORD=secret"
|
||||||
|
- "ADMIN_PASSWORD=foobar"
|
||||||
lime-db:
|
lime-db:
|
||||||
image: mysql:5.7
|
image: mysql:5.7
|
||||||
environment:
|
environment:
|
||||||
|
|||||||
79
entrypoint.sh
Executable file
79
entrypoint.sh
Executable file
@@ -0,0 +1,79 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
DB_TYPE=${DB_TYPE:-'mysql'}
|
||||||
|
DB_HOST=${DB_HOST:-'mysql'}
|
||||||
|
DB_PORT=${DB_PORT:-'3306'}
|
||||||
|
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:-'-'}
|
||||||
|
|
||||||
|
PUBLIC_URL=${PUBLIC_URL:-}
|
||||||
|
URL_FORMAT=${URL_FORMAT:-'path'}
|
||||||
|
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# Check if 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'}
|
||||||
|
cp application/config/config-sample-mysql.php application/config/config.php
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$DB_TYPE" = 'postgresql' ]; then
|
||||||
|
echo 'Info: Using PostgreSQL configuration'
|
||||||
|
DB_CHARSET=${DB_CHARSET:-'utf8'}
|
||||||
|
cp application/config/config-sample-pgsql.php application/config/config.php
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set Database config
|
||||||
|
sed -i "s#\('connectionString' => \).*,\$#\\1'${DB_TYPE}:host=${DB_HOST};port=${DB_PORT};dbname=${DB_NAME};',#g" application/config/config.php
|
||||||
|
sed -i "s#\('username' => \).*,\$#\\1'${DB_USERNAME}',#g" application/config/config.php
|
||||||
|
sed -i "s#\('password' => \).*,\$#\\1'${DB_PASSWORD}',#g" application/config/config.php
|
||||||
|
sed -i "s#\('charset' => \).*,\$#\\1'${DB_CHARSET}',#g" application/config/config.php
|
||||||
|
sed -i "s#\('tablePrefix' => \).*,\$#\\1'${DB_TABLE_PREFIX}',#g" application/config/config.php
|
||||||
|
|
||||||
|
# Set URL config
|
||||||
|
sed -i "s#\('urlFormat' => \).*,\$#\\1'${URL_FORMAT}',#g" application/config/config.php
|
||||||
|
|
||||||
|
# Set Public URL
|
||||||
|
if [ -z "$PUBLIC_URL" ]; then
|
||||||
|
echo 'Info: Setting PublicURL'
|
||||||
|
sed -i "s#\('debug'=>0,\)\$#'publicurl'=>'${PUBLIC_URL}',\n\t\t\\1 #g" application/config/config.php
|
||||||
|
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'
|
||||||
|
# Hint: The console.php script seems to always exit with 1, so that is why
|
||||||
|
php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL || true
|
||||||
|
|
||||||
|
exec "$@"
|
||||||
@@ -12,6 +12,7 @@ RUN apt-get update && \
|
|||||||
libkrb5-dev \
|
libkrb5-dev \
|
||||||
libpng-dev \
|
libpng-dev \
|
||||||
libpq-dev \
|
libpq-dev \
|
||||||
|
netcat \
|
||||||
&& apt-get autoclean; apt-get autoremove && \
|
&& apt-get autoclean; apt-get autoremove && \
|
||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
@@ -38,3 +39,7 @@ ADD "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" /tmp
|
|||||||
RUN tar xzvf "/tmp/${version}.tar.gz" --strip-components=1 -C /var/www/html/ && \
|
RUN tar xzvf "/tmp/${version}.tar.gz" --strip-components=1 -C /var/www/html/ && \
|
||||||
rm "/tmp/${version}.tar.gz" && \
|
rm "/tmp/${version}.tar.gz" && \
|
||||||
chown -R www-data:www-data /var/www/html
|
chown -R www-data:www-data /var/www/html
|
||||||
|
|
||||||
|
COPY entrypoint.sh entrypoint.sh
|
||||||
|
ENTRYPOINT ["/var/www/html/entrypoint.sh"]
|
||||||
|
CMD ["php-fpm"]
|
||||||
|
|||||||
1
fpm/entrypoint.sh
Symbolic link
1
fpm/entrypoint.sh
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../entrypoint.sh
|
||||||
@@ -8,6 +8,9 @@ fileContentTests:
|
|||||||
- name: 'Limesurvey admin file content'
|
- name: 'Limesurvey admin file content'
|
||||||
path: '/var/www/html/admin/index.php'
|
path: '/var/www/html/admin/index.php'
|
||||||
expectedContents: ['LimeSurvey']
|
expectedContents: ['LimeSurvey']
|
||||||
|
- name: 'Entrypoint file content'
|
||||||
|
path: '/var/www/html/entrypoint.sh'
|
||||||
|
expectedContents: ['console.php', 'ADMIN_USER']
|
||||||
|
|
||||||
fileExistenceTests:
|
fileExistenceTests:
|
||||||
- name: 'Limesurvey files'
|
- name: 'Limesurvey files'
|
||||||
@@ -47,6 +50,10 @@ fileExistenceTests:
|
|||||||
shouldExist: true
|
shouldExist: true
|
||||||
|
|
||||||
commandTests:
|
commandTests:
|
||||||
|
- name: "Dependencies - netcat"
|
||||||
|
command: "dpkg"
|
||||||
|
args: ["-l", "netcat"]
|
||||||
|
exitCode: 0
|
||||||
- name: "Dependencies - libldap2-dev"
|
- name: "Dependencies - libldap2-dev"
|
||||||
command: "dpkg"
|
command: "dpkg"
|
||||||
args: ["-l", "libldap2-dev"]
|
args: ["-l", "libldap2-dev"]
|
||||||
|
|||||||
Reference in New Issue
Block a user