mirror of
https://github.com/mykitserver/docker-limesurvey.git
synced 2025-12-07 08:59:23 +01:00
Refactor to support LTS version
This commit is contained in:
51
4.0/fpm-alpine/Dockerfile
Normal file
51
4.0/fpm-alpine/Dockerfile
Normal file
@@ -0,0 +1,51 @@
|
||||
FROM php:7.2-fpm-alpine
|
||||
LABEL maintainer="markus@martialblog.de"
|
||||
ARG version='4.0.1+200120'
|
||||
ARG sha256_checksum='7e4695878a77f4a721f36b66fdd14def1d8b479103b1fceabd3071b2b81b869c'
|
||||
|
||||
# Install OS dependencies
|
||||
RUN set -ex; \
|
||||
apk add --no-cache --virtual .build-deps \
|
||||
freetype-dev \
|
||||
libpng-dev \
|
||||
libjpeg-turbo-dev \
|
||||
openldap-dev \
|
||||
imap-dev \
|
||||
postgresql-dev && \
|
||||
apk add --no-cache netcat-openbsd bash
|
||||
|
||||
# Install PHP Plugins
|
||||
RUN set -ex; \
|
||||
docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr ; \
|
||||
docker-php-ext-configure imap --with-imap-ssl && \
|
||||
docker-php-ext-install \
|
||||
gd \
|
||||
imap \
|
||||
ldap \
|
||||
mbstring \
|
||||
pdo \
|
||||
pdo_mysql \
|
||||
pdo_pgsql \
|
||||
pgsql \
|
||||
zip
|
||||
|
||||
# Download, unzip and chmod of LimeSurvey
|
||||
ADD "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" /tmp
|
||||
|
||||
RUN set -ex; \
|
||||
echo "${sha256_checksum} /tmp/${version}.tar.gz" | sha256sum -c - && \
|
||||
\
|
||||
tar xzvf "/tmp/${version}.tar.gz" --strip-components=1 -C /var/www/html/ && \
|
||||
\
|
||||
rm -rf "/tmp/${version}.tar.gz" \
|
||||
/var/www/html/docs \
|
||||
/var/www/html/tests \
|
||||
/var/www/html/*.md && \
|
||||
chown -R www-data:root /var/www/ ; \
|
||||
chmod -R g=u /var/www
|
||||
|
||||
EXPOSE 9000
|
||||
|
||||
COPY entrypoint.sh entrypoint.sh
|
||||
ENTRYPOINT ["/var/www/html/entrypoint.sh"]
|
||||
CMD ["php-fpm"]
|
||||
101
4.0/fpm-alpine/entrypoint.sh
Executable file
101
4.0/fpm-alpine/entrypoint.sh
Executable file
@@ -0,0 +1,101 @@
|
||||
#!/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:-'-'}
|
||||
|
||||
PUBLIC_URL=${PUBLIC_URL:-}
|
||||
URL_FORMAT=${URL_FORMAT:-'path'}
|
||||
|
||||
|
||||
# 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 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" = 'pgsql' ]; 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
|
||||
if [ ! -z "$DB_SOCK" ]; then
|
||||
echo 'Info: Using unix socket'
|
||||
sed -i "s#\('connectionString' => \).*,\$#\\1'${DB_TYPE}:unix_socket=${DB_SOCK};dbname=${DB_NAME};',#g" application/config/config.php
|
||||
else
|
||||
echo 'Info: Using TCP connection'
|
||||
sed -i "s#\('connectionString' => \).*,\$#\\1'${DB_TYPE}:host=${DB_HOST};port=${DB_PORT};dbname=${DB_NAME};',#g" application/config/config.php
|
||||
fi
|
||||
|
||||
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
|
||||
|
||||
|
||||
# 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
|
||||
# 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 "$@"
|
||||
Reference in New Issue
Block a user