Compare commits

..

27 Commits

Author SHA1 Message Date
Markus Opolka
411ac77814 Upgrading to LTS Version 3.23.0+200813 2020-08-25 07:07:52 +02:00
Markus Opolka
453160b3f2 Upgrading to Version 4.3.11+200817 2020-08-20 18:42:14 +02:00
Markus Opolka
62e27bdfeb Upgrading to Version 4.3.10+200812 2020-08-17 20:39:43 +02:00
Markus Opolka
20231d4131 Upgrading to Version 4.3.9+200806 2020-08-13 08:08:20 +02:00
Markus Opolka
5bf6128301 Upgrading to LTS Version 3.22.210+200804 2020-08-13 08:07:27 +02:00
Markus Opolka
f027de8442 Upgrading to Version 4.3.8+200803 2020-08-07 07:20:56 +02:00
Markus Opolka
088850e4f3 Upgrading to Version 4.3.7+200730 2020-08-03 18:41:43 +02:00
Markus Opolka
0996c4d310 Upgrading to LTS Version 3.22.29+200731 2020-08-03 18:40:45 +02:00
Markus Opolka
4704706cdd Upgrading to Version 4.3.6+200727 2020-07-31 07:51:58 +02:00
Markus Opolka
e81dd14138 Upgrading to LTS Version 3.22.28+200728 2020-07-31 07:50:32 +02:00
Markus Opolka
bb22b75637 Upgrading to Version 4.3.5+200721 2020-07-27 12:20:15 +02:00
Markus Opolka
7c5e1c8902 Upgrading to LTS Version 3.22.27+200720 2020-07-27 12:19:12 +02:00
Markus Opolka
03d0887bad Upgrading to Version 4.3.4+200713 2020-07-20 20:03:46 +02:00
Markus Opolka
f937ded8ce Upgrading to LTS Version 3.22.26+200714 2020-07-20 20:02:54 +02:00
Markus Opolka
05362c3532 Merge pull request #36 from muniter/patch-2
Update README.md
2020-07-20 07:18:50 +02:00
Javier Lopez
dba3c11a23 Update README.md
Hey! Thanks a lot for this repo. I think I'd be nice to add the link to the repo in the README so when people read that part in the Docker Hub, can just jump here straight away.
2020-07-19 19:41:30 -05:00
Markus Opolka
5366866a7b Merge pull request #34 from martialblog/refactor-entrypoint
Refactor entrypoint
2020-07-17 14:34:36 +02:00
Markus Opolka
79a4c3cbee Merge pull request #35 from martialblog/refactor-download
Change download of Limesurvey to curl
2020-07-16 19:08:26 +02:00
Markus Opolka
bf3e4b0378 Change download of Limesurvey to curl
- More secure than ADD
 - Makes better use of cache
2020-07-16 18:35:51 +02:00
Markus Opolka
e2998e2076 Update README 2020-07-16 18:35:04 +02:00
Markus Opolka
8322b5966f Refactor Entrypoint
- Simpler creation of config.php
 - Debug can now be set
 - Encryption Keys are now supported
2020-07-16 17:09:21 +02:00
Markus Opolka
a95a625725 Add exif installation 2020-07-14 09:42:49 +02:00
Markus Opolka
dd90a16086 Upgrading to Version 4.3.3+200707 2020-07-13 19:57:12 +02:00
Markus Opolka
d1699d3d85 Upgrading to LTS Version 3.22.25+200706 2020-07-13 19:56:11 +02:00
Markus Opolka
1707b30df2 Upgrading to Version 4.3.2+200629 2020-07-06 16:07:32 +02:00
Markus Opolka
3a55f6bfaf Upgrading to LTS Version 3.22.24+200630 2020-07-06 16:06:44 +02:00
Markus Opolka
da9fb16aab Upgrading to Version 4.3.1+200623 2020-06-29 21:16:51 +02:00
13 changed files with 472 additions and 223 deletions

View File

@@ -1,7 +1,7 @@
FROM php:7.2-apache FROM php:7.2-apache
LABEL maintainer="markus@martialblog.de" LABEL maintainer="markus@martialblog.de"
ARG version='3.22.23+200626' ARG version='3.23.0+200813'
ARG sha256_checksum='4aa296ebb0ab56d2232a6d8bb2148ac1c4589cf59acd9a2b1824891456095be2' ARG sha256_checksum='d33d3ed68819a8014393ca7f6afb2cfadf0e456df491b556583a34e497a6bc53'
# Install OS dependencies # Install OS dependencies
RUN set -ex; \ RUN set -ex; \
@@ -31,6 +31,7 @@ RUN set -ex; \
docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr; \ docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr; \
docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \ docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \
docker-php-ext-install -j5 \ docker-php-ext-install -j5 \
exif \
gd \ gd \
imap \ imap \
ldap \ ldap \
@@ -57,13 +58,13 @@ RUN a2enmod headers rewrite remoteip; \
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
# Download, unzip and chmod LimeSurvey from official GitHub repository # Download, unzip and chmod LimeSurvey from official GitHub repository
ADD "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" /tmp RUN curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz
RUN set -ex; \ RUN set -ex; \
echo "${sha256_checksum} /tmp/${version}.tar.gz" | sha256sum -c - && \ echo "${sha256_checksum} /tmp/limesurvey.tar.gz" | sha256sum -c - && \
\ \
tar xzvf "/tmp/${version}.tar.gz" --strip-components=1 -C /var/www/html/ && \ tar xzvf "/tmp/limesurvey.tar.gz" --strip-components=1 -C /var/www/html/ && \
rm -f "/tmp/${version}.tar.gz" && \ rm -f "/tmp/limesurvey.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 COPY entrypoint.sh entrypoint.sh

View File

@@ -11,14 +11,30 @@ DB_TABLE_PREFIX=${DB_TABLE_PREFIX:-'lime_'}
DB_USERNAME=${DB_USERNAME:-'limesurvey'} DB_USERNAME=${DB_USERNAME:-'limesurvey'}
DB_PASSWORD=${DB_PASSWORD:-} DB_PASSWORD=${DB_PASSWORD:-}
ENCRYPT_KEYPAIR=${ENCRYPT_KEYPAIR:-}
ENCRYPT_PUBLIC_KEY=${ENCRYPT_PUBLIC_KEY:-}
ENCRYPT_SECRET_KEY=${ENCRYPT_SECRET_KEY:-}
ADMIN_USER=${ADMIN_USER:-'admin'} ADMIN_USER=${ADMIN_USER:-'admin'}
ADMIN_NAME=${ADMIN_NAME:-'admin'} ADMIN_NAME=${ADMIN_NAME:-'admin'}
ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'} ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'}
ADMIN_PASSWORD=${ADMIN_PASSWORD:-'-'} ADMIN_PASSWORD=${ADMIN_PASSWORD:-}
PUBLIC_URL=${PUBLIC_URL:-} PUBLIC_URL=${PUBLIC_URL:-}
URL_FORMAT=${URL_FORMAT:-'path'} URL_FORMAT=${URL_FORMAT:-'path'}
DEBUG=${DEBUG:-0}
DEBUG_SQL=${DEBUG_SQL:-0}
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
# Check if database is available # Check if database is available
if [ -z "$DB_SOCK" ]; then if [ -z "$DB_SOCK" ]; then
@@ -29,8 +45,7 @@ if [ -z "$DB_SOCK" ]; then
done done
fi fi
# Check if config already provisioned
# Check if already provisioned
if [ -f application/config/config.php ]; then if [ -f application/config/config.php ]; then
echo 'Info: config.php already provisioned' echo 'Info: config.php already provisioned'
else else
@@ -39,60 +54,83 @@ else
if [ "$DB_TYPE" = 'mysql' ]; then if [ "$DB_TYPE" = 'mysql' ]; then
echo 'Info: Using MySQL configuration' echo 'Info: Using MySQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8mb4'} DB_CHARSET=${DB_CHARSET:-'utf8mb4'}
cp application/config/config-sample-mysql.php application/config/config.php
fi fi
if [ "$DB_TYPE" = 'pgsql' ]; then if [ "$DB_TYPE" = 'pgsql' ]; then
echo 'Info: Using PostgreSQL configuration' echo 'Info: Using PostgreSQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8'} DB_CHARSET=${DB_CHARSET:-'utf8'}
cp application/config/config-sample-pgsql.php application/config/config.php
fi fi
# Set Database config
if [ ! -z "$DB_SOCK" ]; then if [ ! -z "$DB_SOCK" ]; then
echo 'Info: Using unix socket' echo 'Info: Using unix socket'
sed -i "s#\('connectionString' => \).*,\$#\\1'${DB_TYPE}:unix_socket=${DB_SOCK};dbname=${DB_NAME};',#g" application/config/config.php DB_CONNECT='unix_socket'
else else
echo 'Info: Using TCP connection' 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 DB_CONNECT='host'
fi 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 if [ -z "$PUBLIC_URL" ]; then
echo 'Info: Setting PublicURL' echo 'Info: Setting PublicURL'
sed -i "s#\('debug'=>0,\)\$#'publicurl'=>'${PUBLIC_URL}',\n\t\t\\1 #g" application/config/config.php
fi 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,
),
),
'config'=>array(
'publicurl'=>'$PUBLIC_URL',
'debug'=>$DEBUG,
'debugsql'=>$DEBUG_SQL,
)
);
EOF
fi fi
# Check if security config already provisioned
if [ -f application/config/security.php ]; then
echo 'Info: security.php already provisioned'
else
echo 'Info: Creating security.php'
if [ ! -z "$ENCRYPT_KEYPAIR" ]; then
cat <<EOF > application/config/security.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
\$config = array();
\$config['encryptionkeypair'] = '$ENCRYPT_KEYPAIR';
\$config['encryptionpublickey'] = '$ENCRYPT_PUBLIC_KEY';
\$config['encryptionsecretkey'] = '$ENCRYPT_SECRET_KEY';
return \$config;
EOF
else
echo >&2 'Warning: No encryption keys were provided'
echo >&2 'Warning: A security.php config will be created by the application'
echo >&2 'Warning: THIS FILE NEEDS TO BE PERSISTENT'
fi
fi
# Check if LimeSurvey database is provisioned # Check if LimeSurvey database is provisioned
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.' echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
php application/commands/console.php updatedb php application/commands/console.php updatedb
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo 'Info: Database already provisioned' echo 'Info: Database already provisioned'
else 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 ''
echo 'Running console.php install' echo 'Running console.php install'
php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL

View File

@@ -1,7 +1,7 @@
FROM php:7.2-fpm-alpine FROM php:7.2-fpm-alpine
LABEL maintainer="markus@martialblog.de" LABEL maintainer="markus@martialblog.de"
ARG version='3.22.23+200626' ARG version='3.23.0+200813'
ARG sha256_checksum='4aa296ebb0ab56d2232a6d8bb2148ac1c4589cf59acd9a2b1824891456095be2' ARG sha256_checksum='d33d3ed68819a8014393ca7f6afb2cfadf0e456df491b556583a34e497a6bc53'
# Install OS dependencies # Install OS dependencies
RUN set -ex; \ RUN set -ex; \
@@ -30,14 +30,14 @@ RUN set -ex; \
zip zip
# Download, unzip and chmod of LimeSurvey # Download, unzip and chmod of LimeSurvey
ADD "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" /tmp RUN curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz
RUN set -ex; \ RUN set -ex; \
echo "${sha256_checksum} /tmp/${version}.tar.gz" | sha256sum -c - && \ echo "${sha256_checksum} /tmp/limesurvey.tar.gz" | sha256sum -c - && \
\ \
tar xzvf "/tmp/${version}.tar.gz" --strip-components=1 -C /var/www/html/ && \ tar xzvf "/tmp/limesurvey.tar.gz" --strip-components=1 -C /var/www/html/ && \
\ \
rm -rf "/tmp/${version}.tar.gz" \ rm -rf "/tmp/limesurvey.tar.gz" \
/var/www/html/docs \ /var/www/html/docs \
/var/www/html/tests \ /var/www/html/tests \
/var/www/html/*.md && \ /var/www/html/*.md && \

View File

@@ -11,14 +11,30 @@ DB_TABLE_PREFIX=${DB_TABLE_PREFIX:-'lime_'}
DB_USERNAME=${DB_USERNAME:-'limesurvey'} DB_USERNAME=${DB_USERNAME:-'limesurvey'}
DB_PASSWORD=${DB_PASSWORD:-} DB_PASSWORD=${DB_PASSWORD:-}
ENCRYPT_KEYPAIR=${ENCRYPT_KEYPAIR:-}
ENCRYPT_PUBLIC_KEY=${ENCRYPT_PUBLIC_KEY:-}
ENCRYPT_SECRET_KEY=${ENCRYPT_SECRET_KEY:-}
ADMIN_USER=${ADMIN_USER:-'admin'} ADMIN_USER=${ADMIN_USER:-'admin'}
ADMIN_NAME=${ADMIN_NAME:-'admin'} ADMIN_NAME=${ADMIN_NAME:-'admin'}
ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'} ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'}
ADMIN_PASSWORD=${ADMIN_PASSWORD:-'-'} ADMIN_PASSWORD=${ADMIN_PASSWORD:-}
PUBLIC_URL=${PUBLIC_URL:-} PUBLIC_URL=${PUBLIC_URL:-}
URL_FORMAT=${URL_FORMAT:-'path'} URL_FORMAT=${URL_FORMAT:-'path'}
DEBUG=${DEBUG:-0}
DEBUG_SQL=${DEBUG_SQL:-0}
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
# Check if database is available # Check if database is available
if [ -z "$DB_SOCK" ]; then if [ -z "$DB_SOCK" ]; then
@@ -29,8 +45,7 @@ if [ -z "$DB_SOCK" ]; then
done done
fi fi
# Check if config already provisioned
# Check if already provisioned
if [ -f application/config/config.php ]; then if [ -f application/config/config.php ]; then
echo 'Info: config.php already provisioned' echo 'Info: config.php already provisioned'
else else
@@ -39,60 +54,83 @@ else
if [ "$DB_TYPE" = 'mysql' ]; then if [ "$DB_TYPE" = 'mysql' ]; then
echo 'Info: Using MySQL configuration' echo 'Info: Using MySQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8mb4'} DB_CHARSET=${DB_CHARSET:-'utf8mb4'}
cp application/config/config-sample-mysql.php application/config/config.php
fi fi
if [ "$DB_TYPE" = 'pgsql' ]; then if [ "$DB_TYPE" = 'pgsql' ]; then
echo 'Info: Using PostgreSQL configuration' echo 'Info: Using PostgreSQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8'} DB_CHARSET=${DB_CHARSET:-'utf8'}
cp application/config/config-sample-pgsql.php application/config/config.php
fi fi
# Set Database config
if [ ! -z "$DB_SOCK" ]; then if [ ! -z "$DB_SOCK" ]; then
echo 'Info: Using unix socket' echo 'Info: Using unix socket'
sed -i "s#\('connectionString' => \).*,\$#\\1'${DB_TYPE}:unix_socket=${DB_SOCK};dbname=${DB_NAME};',#g" application/config/config.php DB_CONNECT='unix_socket'
else else
echo 'Info: Using TCP connection' 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 DB_CONNECT='host'
fi 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 if [ -z "$PUBLIC_URL" ]; then
echo 'Info: Setting PublicURL' echo 'Info: Setting PublicURL'
sed -i "s#\('debug'=>0,\)\$#'publicurl'=>'${PUBLIC_URL}',\n\t\t\\1 #g" application/config/config.php
fi 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,
),
),
'config'=>array(
'publicurl'=>'$PUBLIC_URL',
'debug'=>$DEBUG,
'debugsql'=>$DEBUG_SQL,
)
);
EOF
fi fi
# Check if security config already provisioned
if [ -f application/config/security.php ]; then
echo 'Info: security.php already provisioned'
else
echo 'Info: Creating security.php'
if [ ! -z "$ENCRYPT_KEYPAIR" ]; then
cat <<EOF > application/config/security.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
\$config = array();
\$config['encryptionkeypair'] = '$ENCRYPT_KEYPAIR';
\$config['encryptionpublickey'] = '$ENCRYPT_PUBLIC_KEY';
\$config['encryptionsecretkey'] = '$ENCRYPT_SECRET_KEY';
return \$config;
EOF
else
echo >&2 'Warning: No encryption keys were provided'
echo >&2 'Warning: A security.php config will be created by the application'
echo >&2 'Warning: THIS FILE NEEDS TO BE PERSISTENT'
fi
fi
# Check if LimeSurvey database is provisioned # Check if LimeSurvey database is provisioned
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.' echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
php application/commands/console.php updatedb php application/commands/console.php updatedb
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo 'Info: Database already provisioned' echo 'Info: Database already provisioned'
else 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 ''
echo 'Running console.php install' echo 'Running console.php install'
php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL

View File

@@ -1,7 +1,7 @@
FROM php:7.2-fpm FROM php:7.2-fpm
LABEL maintainer="markus@martialblog.de" LABEL maintainer="markus@martialblog.de"
ARG version='3.22.23+200626' ARG version='3.23.0+200813'
ARG sha256_checksum='4aa296ebb0ab56d2232a6d8bb2148ac1c4589cf59acd9a2b1824891456095be2' ARG sha256_checksum='d33d3ed68819a8014393ca7f6afb2cfadf0e456df491b556583a34e497a6bc53'
# Install OS dependencies # Install OS dependencies
RUN set -ex; \ RUN set -ex; \
@@ -31,6 +31,7 @@ RUN set -ex; \
docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr; \ docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr; \
docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \ docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \
docker-php-ext-install -j5 \ docker-php-ext-install -j5 \
exif \
gd \ gd \
imap \ imap \
ldap \ ldap \
@@ -44,13 +45,13 @@ RUN set -ex; \
ENV LIMESURVEY_VERSION=$version ENV LIMESURVEY_VERSION=$version
# Download, unzip and chmod LimeSurvey from official GitHub repository # Download, unzip and chmod LimeSurvey from official GitHub repository
ADD "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" /tmp RUN curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz
RUN set -ex; \ RUN set -ex; \
echo "${sha256_checksum} /tmp/${version}.tar.gz" | sha256sum -c - && \ echo "${sha256_checksum} /tmp/limesurvey.tar.gz" | sha256sum -c - && \
\ \
tar xzvf "/tmp/${version}.tar.gz" --strip-components=1 -C /var/www/html/ && \ tar xzvf "/tmp/limesurvey.tar.gz" --strip-components=1 -C /var/www/html/ && \
rm -f "/tmp/${version}.tar.gz" && \ rm -f "/tmp/limesurvey.tar.gz" && \
chown -R www-data:www-data /var/www/html chown -R www-data:www-data /var/www/html
EXPOSE 9000 EXPOSE 9000

View File

@@ -11,14 +11,30 @@ DB_TABLE_PREFIX=${DB_TABLE_PREFIX:-'lime_'}
DB_USERNAME=${DB_USERNAME:-'limesurvey'} DB_USERNAME=${DB_USERNAME:-'limesurvey'}
DB_PASSWORD=${DB_PASSWORD:-} DB_PASSWORD=${DB_PASSWORD:-}
ENCRYPT_KEYPAIR=${ENCRYPT_KEYPAIR:-}
ENCRYPT_PUBLIC_KEY=${ENCRYPT_PUBLIC_KEY:-}
ENCRYPT_SECRET_KEY=${ENCRYPT_SECRET_KEY:-}
ADMIN_USER=${ADMIN_USER:-'admin'} ADMIN_USER=${ADMIN_USER:-'admin'}
ADMIN_NAME=${ADMIN_NAME:-'admin'} ADMIN_NAME=${ADMIN_NAME:-'admin'}
ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'} ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'}
ADMIN_PASSWORD=${ADMIN_PASSWORD:-'-'} ADMIN_PASSWORD=${ADMIN_PASSWORD:-}
PUBLIC_URL=${PUBLIC_URL:-} PUBLIC_URL=${PUBLIC_URL:-}
URL_FORMAT=${URL_FORMAT:-'path'} URL_FORMAT=${URL_FORMAT:-'path'}
DEBUG=${DEBUG:-0}
DEBUG_SQL=${DEBUG_SQL:-0}
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
# Check if database is available # Check if database is available
if [ -z "$DB_SOCK" ]; then if [ -z "$DB_SOCK" ]; then
@@ -29,8 +45,7 @@ if [ -z "$DB_SOCK" ]; then
done done
fi fi
# Check if config already provisioned
# Check if already provisioned
if [ -f application/config/config.php ]; then if [ -f application/config/config.php ]; then
echo 'Info: config.php already provisioned' echo 'Info: config.php already provisioned'
else else
@@ -39,60 +54,83 @@ else
if [ "$DB_TYPE" = 'mysql' ]; then if [ "$DB_TYPE" = 'mysql' ]; then
echo 'Info: Using MySQL configuration' echo 'Info: Using MySQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8mb4'} DB_CHARSET=${DB_CHARSET:-'utf8mb4'}
cp application/config/config-sample-mysql.php application/config/config.php
fi fi
if [ "$DB_TYPE" = 'pgsql' ]; then if [ "$DB_TYPE" = 'pgsql' ]; then
echo 'Info: Using PostgreSQL configuration' echo 'Info: Using PostgreSQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8'} DB_CHARSET=${DB_CHARSET:-'utf8'}
cp application/config/config-sample-pgsql.php application/config/config.php
fi fi
# Set Database config
if [ ! -z "$DB_SOCK" ]; then if [ ! -z "$DB_SOCK" ]; then
echo 'Info: Using unix socket' echo 'Info: Using unix socket'
sed -i "s#\('connectionString' => \).*,\$#\\1'${DB_TYPE}:unix_socket=${DB_SOCK};dbname=${DB_NAME};',#g" application/config/config.php DB_CONNECT='unix_socket'
else else
echo 'Info: Using TCP connection' 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 DB_CONNECT='host'
fi 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 if [ -z "$PUBLIC_URL" ]; then
echo 'Info: Setting PublicURL' echo 'Info: Setting PublicURL'
sed -i "s#\('debug'=>0,\)\$#'publicurl'=>'${PUBLIC_URL}',\n\t\t\\1 #g" application/config/config.php
fi 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,
),
),
'config'=>array(
'publicurl'=>'$PUBLIC_URL',
'debug'=>$DEBUG,
'debugsql'=>$DEBUG_SQL,
)
);
EOF
fi fi
# Check if security config already provisioned
if [ -f application/config/security.php ]; then
echo 'Info: security.php already provisioned'
else
echo 'Info: Creating security.php'
if [ ! -z "$ENCRYPT_KEYPAIR" ]; then
cat <<EOF > application/config/security.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
\$config = array();
\$config['encryptionkeypair'] = '$ENCRYPT_KEYPAIR';
\$config['encryptionpublickey'] = '$ENCRYPT_PUBLIC_KEY';
\$config['encryptionsecretkey'] = '$ENCRYPT_SECRET_KEY';
return \$config;
EOF
else
echo >&2 'Warning: No encryption keys were provided'
echo >&2 'Warning: A security.php config will be created by the application'
echo >&2 'Warning: THIS FILE NEEDS TO BE PERSISTENT'
fi
fi
# Check if LimeSurvey database is provisioned # Check if LimeSurvey database is provisioned
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.' echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
php application/commands/console.php updatedb php application/commands/console.php updatedb
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo 'Info: Database already provisioned' echo 'Info: Database already provisioned'
else 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 ''
echo 'Running console.php install' echo 'Running console.php install'
php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL

View File

@@ -1,7 +1,7 @@
FROM php:7.2-apache FROM php:7.2-apache
LABEL maintainer="markus@martialblog.de" LABEL maintainer="markus@martialblog.de"
ARG version='4.3.0+200616' ARG version='4.3.11+200817'
ARG sha256_checksum='d254918f43cdc10ee97b3f587b2c0bc0be381ef83cb588a3f8fae84f8a1b1e36' ARG sha256_checksum='0b375f12a5d16c7a45a258a7eb77f41c5541a4816a3fcb675d9bc295e0088e48'
# Install OS dependencies # Install OS dependencies
RUN set -ex; \ RUN set -ex; \
@@ -18,6 +18,7 @@ RUN set -ex; \
libpng-dev \ libpng-dev \
libpq-dev \ libpq-dev \
netcat \ netcat \
curl \
\ \
&& apt-get -y autoclean; apt-get -y autoremove; \ && apt-get -y autoclean; apt-get -y autoremove; \
rm -rf /var/lib/apt/lists/* rm -rf /var/lib/apt/lists/*
@@ -31,6 +32,7 @@ RUN set -ex; \
docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr; \ docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr; \
docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \ docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \
docker-php-ext-install -j5 \ docker-php-ext-install -j5 \
exif \
gd \ gd \
imap \ imap \
ldap \ ldap \
@@ -57,13 +59,13 @@ RUN a2enmod headers rewrite remoteip; \
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
# Download, unzip and chmod LimeSurvey from official GitHub repository # Download, unzip and chmod LimeSurvey from official GitHub repository
ADD "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" /tmp RUN curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz
RUN set -ex; \ RUN set -ex; \
echo "${sha256_checksum} /tmp/${version}.tar.gz" | sha256sum -c - && \ echo "${sha256_checksum} /tmp/limesurvey.tar.gz" | sha256sum -c - && \
\ \
tar xzvf "/tmp/${version}.tar.gz" --strip-components=1 -C /var/www/html/ && \ tar xzvf "/tmp/limesurvey.tar.gz" --strip-components=1 -C /var/www/html/ && \
rm -f "/tmp/${version}.tar.gz" && \ rm -f "/tmp/limesurvey.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 COPY entrypoint.sh entrypoint.sh

View File

@@ -11,14 +11,30 @@ DB_TABLE_PREFIX=${DB_TABLE_PREFIX:-'lime_'}
DB_USERNAME=${DB_USERNAME:-'limesurvey'} DB_USERNAME=${DB_USERNAME:-'limesurvey'}
DB_PASSWORD=${DB_PASSWORD:-} DB_PASSWORD=${DB_PASSWORD:-}
ENCRYPT_KEYPAIR=${ENCRYPT_KEYPAIR:-}
ENCRYPT_PUBLIC_KEY=${ENCRYPT_PUBLIC_KEY:-}
ENCRYPT_SECRET_KEY=${ENCRYPT_SECRET_KEY:-}
ADMIN_USER=${ADMIN_USER:-'admin'} ADMIN_USER=${ADMIN_USER:-'admin'}
ADMIN_NAME=${ADMIN_NAME:-'admin'} ADMIN_NAME=${ADMIN_NAME:-'admin'}
ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'} ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'}
ADMIN_PASSWORD=${ADMIN_PASSWORD:-'-'} ADMIN_PASSWORD=${ADMIN_PASSWORD:-}
PUBLIC_URL=${PUBLIC_URL:-} PUBLIC_URL=${PUBLIC_URL:-}
URL_FORMAT=${URL_FORMAT:-'path'} URL_FORMAT=${URL_FORMAT:-'path'}
DEBUG=${DEBUG:-0}
DEBUG_SQL=${DEBUG_SQL:-0}
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
# Check if database is available # Check if database is available
if [ -z "$DB_SOCK" ]; then if [ -z "$DB_SOCK" ]; then
@@ -29,8 +45,7 @@ if [ -z "$DB_SOCK" ]; then
done done
fi fi
# Check if config already provisioned
# Check if already provisioned
if [ -f application/config/config.php ]; then if [ -f application/config/config.php ]; then
echo 'Info: config.php already provisioned' echo 'Info: config.php already provisioned'
else else
@@ -39,60 +54,83 @@ else
if [ "$DB_TYPE" = 'mysql' ]; then if [ "$DB_TYPE" = 'mysql' ]; then
echo 'Info: Using MySQL configuration' echo 'Info: Using MySQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8mb4'} DB_CHARSET=${DB_CHARSET:-'utf8mb4'}
cp application/config/config-sample-mysql.php application/config/config.php
fi fi
if [ "$DB_TYPE" = 'pgsql' ]; then if [ "$DB_TYPE" = 'pgsql' ]; then
echo 'Info: Using PostgreSQL configuration' echo 'Info: Using PostgreSQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8'} DB_CHARSET=${DB_CHARSET:-'utf8'}
cp application/config/config-sample-pgsql.php application/config/config.php
fi fi
# Set Database config
if [ ! -z "$DB_SOCK" ]; then if [ ! -z "$DB_SOCK" ]; then
echo 'Info: Using unix socket' echo 'Info: Using unix socket'
sed -i "s#\('connectionString' => \).*,\$#\\1'${DB_TYPE}:unix_socket=${DB_SOCK};dbname=${DB_NAME};',#g" application/config/config.php DB_CONNECT='unix_socket'
else else
echo 'Info: Using TCP connection' 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 DB_CONNECT='host'
fi 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 if [ -z "$PUBLIC_URL" ]; then
echo 'Info: Setting PublicURL' echo 'Info: Setting PublicURL'
sed -i "s#\('debug'=>0,\)\$#'publicurl'=>'${PUBLIC_URL}',\n\t\t\\1 #g" application/config/config.php
fi 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,
),
),
'config'=>array(
'publicurl'=>'$PUBLIC_URL',
'debug'=>$DEBUG,
'debugsql'=>$DEBUG_SQL,
)
);
EOF
fi fi
# Check if security config already provisioned
if [ -f application/config/security.php ]; then
echo 'Info: security.php already provisioned'
else
echo 'Info: Creating security.php'
if [ ! -z "$ENCRYPT_KEYPAIR" ]; then
cat <<EOF > application/config/security.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
\$config = array();
\$config['encryptionkeypair'] = '$ENCRYPT_KEYPAIR';
\$config['encryptionpublickey'] = '$ENCRYPT_PUBLIC_KEY';
\$config['encryptionsecretkey'] = '$ENCRYPT_SECRET_KEY';
return \$config;
EOF
else
echo >&2 'Warning: No encryption keys were provided'
echo >&2 'Warning: A security.php config will be created by the application'
echo >&2 'Warning: THIS FILE NEEDS TO BE PERSISTENT'
fi
fi
# Check if LimeSurvey database is provisioned # Check if LimeSurvey database is provisioned
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.' echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
php application/commands/console.php updatedb php application/commands/console.php updatedb
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo 'Info: Database already provisioned' echo 'Info: Database already provisioned'
else 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 ''
echo 'Running console.php install' echo 'Running console.php install'
php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL

View File

@@ -1,7 +1,7 @@
FROM php:7.2-fpm-alpine FROM php:7.2-fpm-alpine
LABEL maintainer="markus@martialblog.de" LABEL maintainer="markus@martialblog.de"
ARG version='4.3.0+200616' ARG version='4.3.11+200817'
ARG sha256_checksum='d254918f43cdc10ee97b3f587b2c0bc0be381ef83cb588a3f8fae84f8a1b1e36' ARG sha256_checksum='0b375f12a5d16c7a45a258a7eb77f41c5541a4816a3fcb675d9bc295e0088e48'
# Install OS dependencies # Install OS dependencies
RUN set -ex; \ RUN set -ex; \
@@ -19,6 +19,7 @@ RUN set -ex; \
docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr ; \ 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-configure imap --with-imap-ssl && \
docker-php-ext-install \ docker-php-ext-install \
exif \
gd \ gd \
imap \ imap \
ldap \ ldap \
@@ -30,14 +31,14 @@ RUN set -ex; \
zip zip
# Download, unzip and chmod of LimeSurvey # Download, unzip and chmod of LimeSurvey
ADD "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" /tmp RUN curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz
RUN set -ex; \ RUN set -ex; \
echo "${sha256_checksum} /tmp/${version}.tar.gz" | sha256sum -c - && \ echo "${sha256_checksum} /tmp/limesurvey.tar.gz" | sha256sum -c - && \
\ \
tar xzvf "/tmp/${version}.tar.gz" --strip-components=1 -C /var/www/html/ && \ tar xzvf "/tmp/limesurvey.tar.gz" --strip-components=1 -C /var/www/html/ && \
\ \
rm -rf "/tmp/${version}.tar.gz" \ rm -rf "/tmp/limesurvey.tar.gz" \
/var/www/html/docs \ /var/www/html/docs \
/var/www/html/tests \ /var/www/html/tests \
/var/www/html/*.md && \ /var/www/html/*.md && \

View File

@@ -11,14 +11,30 @@ DB_TABLE_PREFIX=${DB_TABLE_PREFIX:-'lime_'}
DB_USERNAME=${DB_USERNAME:-'limesurvey'} DB_USERNAME=${DB_USERNAME:-'limesurvey'}
DB_PASSWORD=${DB_PASSWORD:-} DB_PASSWORD=${DB_PASSWORD:-}
ENCRYPT_KEYPAIR=${ENCRYPT_KEYPAIR:-}
ENCRYPT_PUBLIC_KEY=${ENCRYPT_PUBLIC_KEY:-}
ENCRYPT_SECRET_KEY=${ENCRYPT_SECRET_KEY:-}
ADMIN_USER=${ADMIN_USER:-'admin'} ADMIN_USER=${ADMIN_USER:-'admin'}
ADMIN_NAME=${ADMIN_NAME:-'admin'} ADMIN_NAME=${ADMIN_NAME:-'admin'}
ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'} ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'}
ADMIN_PASSWORD=${ADMIN_PASSWORD:-'-'} ADMIN_PASSWORD=${ADMIN_PASSWORD:-}
PUBLIC_URL=${PUBLIC_URL:-} PUBLIC_URL=${PUBLIC_URL:-}
URL_FORMAT=${URL_FORMAT:-'path'} URL_FORMAT=${URL_FORMAT:-'path'}
DEBUG=${DEBUG:-0}
DEBUG_SQL=${DEBUG_SQL:-0}
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
# Check if database is available # Check if database is available
if [ -z "$DB_SOCK" ]; then if [ -z "$DB_SOCK" ]; then
@@ -29,8 +45,7 @@ if [ -z "$DB_SOCK" ]; then
done done
fi fi
# Check if config already provisioned
# Check if already provisioned
if [ -f application/config/config.php ]; then if [ -f application/config/config.php ]; then
echo 'Info: config.php already provisioned' echo 'Info: config.php already provisioned'
else else
@@ -39,60 +54,83 @@ else
if [ "$DB_TYPE" = 'mysql' ]; then if [ "$DB_TYPE" = 'mysql' ]; then
echo 'Info: Using MySQL configuration' echo 'Info: Using MySQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8mb4'} DB_CHARSET=${DB_CHARSET:-'utf8mb4'}
cp application/config/config-sample-mysql.php application/config/config.php
fi fi
if [ "$DB_TYPE" = 'pgsql' ]; then if [ "$DB_TYPE" = 'pgsql' ]; then
echo 'Info: Using PostgreSQL configuration' echo 'Info: Using PostgreSQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8'} DB_CHARSET=${DB_CHARSET:-'utf8'}
cp application/config/config-sample-pgsql.php application/config/config.php
fi fi
# Set Database config
if [ ! -z "$DB_SOCK" ]; then if [ ! -z "$DB_SOCK" ]; then
echo 'Info: Using unix socket' echo 'Info: Using unix socket'
sed -i "s#\('connectionString' => \).*,\$#\\1'${DB_TYPE}:unix_socket=${DB_SOCK};dbname=${DB_NAME};',#g" application/config/config.php DB_CONNECT='unix_socket'
else else
echo 'Info: Using TCP connection' 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 DB_CONNECT='host'
fi 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 if [ -z "$PUBLIC_URL" ]; then
echo 'Info: Setting PublicURL' echo 'Info: Setting PublicURL'
sed -i "s#\('debug'=>0,\)\$#'publicurl'=>'${PUBLIC_URL}',\n\t\t\\1 #g" application/config/config.php
fi 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,
),
),
'config'=>array(
'publicurl'=>'$PUBLIC_URL',
'debug'=>$DEBUG,
'debugsql'=>$DEBUG_SQL,
)
);
EOF
fi fi
# Check if security config already provisioned
if [ -f application/config/security.php ]; then
echo 'Info: security.php already provisioned'
else
echo 'Info: Creating security.php'
if [ ! -z "$ENCRYPT_KEYPAIR" ]; then
cat <<EOF > application/config/security.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
\$config = array();
\$config['encryptionkeypair'] = '$ENCRYPT_KEYPAIR';
\$config['encryptionpublickey'] = '$ENCRYPT_PUBLIC_KEY';
\$config['encryptionsecretkey'] = '$ENCRYPT_SECRET_KEY';
return \$config;
EOF
else
echo >&2 'Warning: No encryption keys were provided'
echo >&2 'Warning: A security.php config will be created by the application'
echo >&2 'Warning: THIS FILE NEEDS TO BE PERSISTENT'
fi
fi
# Check if LimeSurvey database is provisioned # Check if LimeSurvey database is provisioned
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.' echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
php application/commands/console.php updatedb php application/commands/console.php updatedb
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo 'Info: Database already provisioned' echo 'Info: Database already provisioned'
else 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 ''
echo 'Running console.php install' echo 'Running console.php install'
php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL

View File

@@ -1,7 +1,7 @@
FROM php:7.2-fpm FROM php:7.2-fpm
LABEL maintainer="markus@martialblog.de" LABEL maintainer="markus@martialblog.de"
ARG version='4.3.0+200616' ARG version='4.3.11+200817'
ARG sha256_checksum='d254918f43cdc10ee97b3f587b2c0bc0be381ef83cb588a3f8fae84f8a1b1e36' ARG sha256_checksum='0b375f12a5d16c7a45a258a7eb77f41c5541a4816a3fcb675d9bc295e0088e48'
# Install OS dependencies # Install OS dependencies
RUN set -ex; \ RUN set -ex; \
@@ -31,6 +31,7 @@ RUN set -ex; \
docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr; \ docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr; \
docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \ docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \
docker-php-ext-install -j5 \ docker-php-ext-install -j5 \
exif \
gd \ gd \
imap \ imap \
ldap \ ldap \
@@ -44,13 +45,13 @@ RUN set -ex; \
ENV LIMESURVEY_VERSION=$version ENV LIMESURVEY_VERSION=$version
# Download, unzip and chmod LimeSurvey from official GitHub repository # Download, unzip and chmod LimeSurvey from official GitHub repository
ADD "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" /tmp RUN curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz
RUN set -ex; \ RUN set -ex; \
echo "${sha256_checksum} /tmp/${version}.tar.gz" | sha256sum -c - && \ echo "${sha256_checksum} /tmp/limesurvey.tar.gz" | sha256sum -c - && \
\ \
tar xzvf "/tmp/${version}.tar.gz" --strip-components=1 -C /var/www/html/ && \ tar xzvf "/tmp/limesurvey.tar.gz" --strip-components=1 -C /var/www/html/ && \
rm -f "/tmp/${version}.tar.gz" && \ rm -f "/tmp/limesurvey.tar.gz" && \
chown -R www-data:www-data /var/www/html chown -R www-data:www-data /var/www/html
EXPOSE 9000 EXPOSE 9000

View File

@@ -11,14 +11,30 @@ DB_TABLE_PREFIX=${DB_TABLE_PREFIX:-'lime_'}
DB_USERNAME=${DB_USERNAME:-'limesurvey'} DB_USERNAME=${DB_USERNAME:-'limesurvey'}
DB_PASSWORD=${DB_PASSWORD:-} DB_PASSWORD=${DB_PASSWORD:-}
ENCRYPT_KEYPAIR=${ENCRYPT_KEYPAIR:-}
ENCRYPT_PUBLIC_KEY=${ENCRYPT_PUBLIC_KEY:-}
ENCRYPT_SECRET_KEY=${ENCRYPT_SECRET_KEY:-}
ADMIN_USER=${ADMIN_USER:-'admin'} ADMIN_USER=${ADMIN_USER:-'admin'}
ADMIN_NAME=${ADMIN_NAME:-'admin'} ADMIN_NAME=${ADMIN_NAME:-'admin'}
ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'} ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'}
ADMIN_PASSWORD=${ADMIN_PASSWORD:-'-'} ADMIN_PASSWORD=${ADMIN_PASSWORD:-}
PUBLIC_URL=${PUBLIC_URL:-} PUBLIC_URL=${PUBLIC_URL:-}
URL_FORMAT=${URL_FORMAT:-'path'} URL_FORMAT=${URL_FORMAT:-'path'}
DEBUG=${DEBUG:-0}
DEBUG_SQL=${DEBUG_SQL:-0}
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
# Check if database is available # Check if database is available
if [ -z "$DB_SOCK" ]; then if [ -z "$DB_SOCK" ]; then
@@ -29,8 +45,7 @@ if [ -z "$DB_SOCK" ]; then
done done
fi fi
# Check if config already provisioned
# Check if already provisioned
if [ -f application/config/config.php ]; then if [ -f application/config/config.php ]; then
echo 'Info: config.php already provisioned' echo 'Info: config.php already provisioned'
else else
@@ -39,60 +54,83 @@ else
if [ "$DB_TYPE" = 'mysql' ]; then if [ "$DB_TYPE" = 'mysql' ]; then
echo 'Info: Using MySQL configuration' echo 'Info: Using MySQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8mb4'} DB_CHARSET=${DB_CHARSET:-'utf8mb4'}
cp application/config/config-sample-mysql.php application/config/config.php
fi fi
if [ "$DB_TYPE" = 'pgsql' ]; then if [ "$DB_TYPE" = 'pgsql' ]; then
echo 'Info: Using PostgreSQL configuration' echo 'Info: Using PostgreSQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8'} DB_CHARSET=${DB_CHARSET:-'utf8'}
cp application/config/config-sample-pgsql.php application/config/config.php
fi fi
# Set Database config
if [ ! -z "$DB_SOCK" ]; then if [ ! -z "$DB_SOCK" ]; then
echo 'Info: Using unix socket' echo 'Info: Using unix socket'
sed -i "s#\('connectionString' => \).*,\$#\\1'${DB_TYPE}:unix_socket=${DB_SOCK};dbname=${DB_NAME};',#g" application/config/config.php DB_CONNECT='unix_socket'
else else
echo 'Info: Using TCP connection' 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 DB_CONNECT='host'
fi 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 if [ -z "$PUBLIC_URL" ]; then
echo 'Info: Setting PublicURL' echo 'Info: Setting PublicURL'
sed -i "s#\('debug'=>0,\)\$#'publicurl'=>'${PUBLIC_URL}',\n\t\t\\1 #g" application/config/config.php
fi 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,
),
),
'config'=>array(
'publicurl'=>'$PUBLIC_URL',
'debug'=>$DEBUG,
'debugsql'=>$DEBUG_SQL,
)
);
EOF
fi fi
# Check if security config already provisioned
if [ -f application/config/security.php ]; then
echo 'Info: security.php already provisioned'
else
echo 'Info: Creating security.php'
if [ ! -z "$ENCRYPT_KEYPAIR" ]; then
cat <<EOF > application/config/security.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
\$config = array();
\$config['encryptionkeypair'] = '$ENCRYPT_KEYPAIR';
\$config['encryptionpublickey'] = '$ENCRYPT_PUBLIC_KEY';
\$config['encryptionsecretkey'] = '$ENCRYPT_SECRET_KEY';
return \$config;
EOF
else
echo >&2 'Warning: No encryption keys were provided'
echo >&2 'Warning: A security.php config will be created by the application'
echo >&2 'Warning: THIS FILE NEEDS TO BE PERSISTENT'
fi
fi
# Check if LimeSurvey database is provisioned # Check if LimeSurvey database is provisioned
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.' echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
php application/commands/console.php updatedb php application/commands/console.php updatedb
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo 'Info: Database already provisioned' echo 'Info: Database already provisioned'
else 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 ''
echo 'Running console.php install' echo 'Running console.php install'
php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL

View File

@@ -52,6 +52,16 @@ To change to LimeSurvey configuration, you can mount a Volume into the Container
**Hint**: If this configuration is present before the installation, the LimeSurvey Web Installer will not run automatically. **Hint**: If this configuration is present before the installation, the LimeSurvey Web Installer will not run automatically.
## Data Encryption
LimeSurvey 4 supports data encryption, this image give you these options:
* Provide a security.php file directly (volume)
* Provide encryption keys for the security.php file (environment variables)
* Provide nothing and get a non-persistent security.php file
For further details on the settings see: https://manual.limesurvey.org/Data_encryption
# Environment Variables # Environment Variables
| Parameter | Description | | Parameter | Description |
@@ -70,12 +80,17 @@ To change to LimeSurvey configuration, you can mount a Volume into the Container
| ADMIN_PASSWORD | Initial LimeSurvey Admin Password | | ADMIN_PASSWORD | Initial LimeSurvey Admin Password |
| PUBLIC_URL | Public URL for public scripts | | PUBLIC_URL | Public URL for public scripts |
| URL_FORMAT | URL Format. path or get | | URL_FORMAT | URL Format. path or get |
| DEBUG | Debug level (0, 1, 2). Default: 0 |
| DEBUG_SQL | SQL Debug level (0, 1, 2). Default 0 |
| ENCRYPT_KEYPAIR | Data encryption keypair |
| ENCRYPT_PUBLIC_KEY | Data encryption public key |
| ENCRYPY_SECRET_KEY | Data encryption secret key |
For further details on the settings see: https://manual.limesurvey.org/Optional_settings#Advanced_Path_Settings For further details on the settings see: https://manual.limesurvey.org/Optional_settings#Advanced_Path_Settings
# Running this image with docker-compose # Running this image with docker-compose
The easiest way to get a fully featured and functional setup is using a docker-compose file. Several examples are provided in the repository. The easiest way to get a fully featured and functional setup is using a docker-compose file. Several examples are provided in the [repository](https://github.com/martialblog/docker-limesurvey).
``` ```
docker-compose up docker-compose up