Compare commits

...

59 Commits

Author SHA1 Message Date
Markus Opolka
55d9b48441 Upgrading to Version 5.4.8+221024 2022-11-02 08:31:52 +01:00
Markus Opolka
c0167b9a23 Upgrading to LTS Version 3.28.35+221025 2022-11-02 08:31:28 +01:00
Markus Opolka
6cf8fba820 Upgrading to Version 5.4.7+221019 2022-10-25 08:52:08 +02:00
Markus Opolka
e6b006edfd Upgrading to LTS Version 3.28.34+221021 2022-10-25 08:51:35 +02:00
Markus Opolka
32be5d4370 Upgrading to Version 5.4.6+221018 2022-10-19 11:35:08 +02:00
Markus Opolka
e8818f58e2 Upgrading to LTS Version 3.28.33+221020 2022-10-19 11:34:16 +02:00
Markus Opolka
c7e92149ac Upgrading to Version 5.4.5+221010 2022-10-18 11:30:06 +02:00
Markus Opolka
e8d4216266 Upgrading to Version 5.4.4+221004 2022-10-10 14:44:57 +02:00
Markus Opolka
7597951edf Upgrading to LTS Version 3.28.31+221005 2022-10-10 14:43:59 +02:00
Markus Opolka
d4d89859c1 Upgrading to Version 5.4.3+220926 2022-10-04 17:15:21 +02:00
Markus Opolka
eef6c84c91 Upgrading to LTS Version 3.28.30+220927 2022-10-04 17:14:47 +02:00
Markus Opolka
3117108a47 Upgrading to Version 5.4.2+220921 2022-09-26 14:14:10 +02:00
Markus Opolka
ce612a0bb9 Upgrading to LTS Version 3.28.29+220920 2022-09-26 14:13:45 +02:00
Markus Opolka
f094489674 Upgrading to Version 5.4.1+220919 2022-09-21 08:39:27 +02:00
Markus Opolka
12a8ba2660 Merge pull request #128 from edgarrmondragon/upgrade-5.4.0+220913
Upgrading to Version 5.4.0+220913
2022-09-19 21:17:53 +02:00
Markus Opolka
f3e7c1451a Merge pull request #129 from edgarrmondragon/upgrade-3.28.28+220912
Upgrading to LTS Version 3.28.28+220912
2022-09-19 21:11:30 +02:00
Edgar Ramírez Mondragón
66b2708e41 Upgrading to LTS Version 3.28.28+220912 2022-09-19 12:53:22 -05:00
Edgar Ramírez Mondragón
5ba0746db1 Upgrading to Version 5.4.0+220913 2022-09-19 12:52:19 -05:00
Markus Opolka
38ba19ffec Update Makefile to that Container runtime is variable 2022-09-14 15:26:08 +02:00
Markus Opolka
8d54793bf6 Upgrading to Version 5.3.32+220817 2022-09-13 12:44:01 +02:00
Markus Opolka
f8122f286c Upgrading to LTS Version 3.28.27+220905 2022-09-12 16:25:02 +02:00
Markus Opolka
93c5bff4d4 Upgrading to LTS Version 3.28.26+220829 2022-09-05 12:56:51 +02:00
Markus Opolka
b76bc10938 Upgrading to LTS Version 3.28.25+220822 2022-08-30 09:27:44 +02:00
Markus Opolka
db81ee1d42 Update CONTRIBUTING.md 2022-08-25 10:01:09 +02:00
Markus Opolka
dbb996270d Merge pull request #126 from fkr/master
escape '|' so that markdown is rendered properly.
2022-08-25 09:52:32 +02:00
Felix Kronlage-Dammers
b1a85992d7 escape '|' so that markdown is rendered properly. 2022-08-25 09:43:42 +02:00
Markus Opolka
c3f547aa3c Merge pull request #125 from martialblog/fix/images-fqdn
Change Container Image Names to FQDN
2022-08-24 09:26:45 +02:00
Markus Opolka
24ed34bc01 Change Base Container Image Names to FQDN in Dockerfiles 2022-08-24 09:21:22 +02:00
Markus Opolka
77ba4fe5e7 Change Container Image Names to FQDN in docker-compose examples 2022-08-24 09:21:18 +02:00
Markus Opolka
4077b9d0c8 Upgrading to LTS Version 3.28.24+220816 2022-08-23 08:44:52 +02:00
Markus Opolka
0ce040715c Update Makefile
- Use variable for Container Runtime, defaults to podman
2022-08-23 08:43:18 +02:00
Markus Opolka
d4072def38 Upgrading to Version 5.3.31+220815 2022-08-17 16:51:31 +02:00
Markus Opolka
8cd721ab4b Upgrading to Version 5.3.30+220808 2022-08-15 15:43:23 +02:00
Markus Opolka
76ccb812a4 Upgrading to LTS Version 3.28.23+220809 2022-08-15 15:42:20 +02:00
Markus Opolka
289e07597c Upgrading to Version 5.3.29+220801 2022-08-08 14:08:15 +02:00
Markus Opolka
10b4f482ff Upgrading to LTS Version 3.28.22+220802 2022-08-08 14:07:36 +02:00
Markus Opolka
89829181a7 Upgrading to Version 5.3.28+220727 2022-08-01 11:26:41 +02:00
Markus Opolka
0fa7cc0c28 Upgrading to LTS Version 3.28.21+220726 2022-08-01 11:25:11 +02:00
Markus Opolka
da15d218b4 Upgrading to Version 5.3.27+220725 2022-07-27 19:40:10 +02:00
Markus Opolka
fe85d3caed Upgrading to Version 5.3.26+220720 2022-07-25 13:09:14 +02:00
Markus Opolka
3ae6ad9a4d Upgrading to LTS Version 3.28.20+220719 2022-07-25 13:08:33 +02:00
Markus Opolka
84bef42be8 Upgrading to Version 5.3.25+220718 2022-07-18 13:11:41 +02:00
Markus Opolka
d586d00f65 Upgrading to LTS Version 3.28.19+220712 2022-07-18 13:11:07 +02:00
Markus Opolka
1f1dc5988c Upgrading to Version 5.3.23+220705 2022-07-13 17:22:50 +02:00
Markus Opolka
d1589be66e Upgrading to LTS Version 3.28.18+220706 2022-07-13 17:21:25 +02:00
Markus Opolka
d70f6e96a2 Upgrading to Version 5.3.22+220628 2022-07-06 14:55:39 +02:00
Markus Opolka
ab4999ce35 Upgrading to LTS Version 3.28.17+220627 2022-07-06 14:54:57 +02:00
Markus Opolka
316121af13 Upgrading to Version 5.3.21+220620 2022-06-29 11:15:07 +02:00
Markus Opolka
34416fb250 Upgrading to LTS Version 3.28.16+220621 2022-06-29 11:14:26 +02:00
Markus Opolka
e640684875 Upgrading to Version 5.3.20+220615 2022-06-20 12:37:40 +02:00
Markus Opolka
e8595fbbed Upgrading to LTS Version 3.28.15+220616 2022-06-20 12:36:02 +02:00
Markus Opolka
a107e3a14f Upgrading to Version 5.3.19+220607 2022-06-17 09:06:09 +02:00
Markus Opolka
69a0febd53 Upgrading to LTS Version 3.28.14+220608 2022-06-17 09:05:00 +02:00
Edgar R. M
2a8c53273e feat: Move ARG instructions right before where they are used (#124) 2022-06-17 09:03:45 +02:00
Markus Opolka
882cc50e81 Upgrading to Version 5.3.18+220530 2022-06-07 17:42:21 +02:00
Markus Opolka
1d3081acd7 Upgrading to LTS Version 3.28.13+220531 2022-06-07 17:41:36 +02:00
Markus Opolka
0d13763a47 Remove LimeSurvey 4.0 Dockerfiles
- No longer supported, replaced by 5.0
2022-06-07 17:40:38 +02:00
Edgar R. M
7ee31a96ec Add a 'archive_url' build argument (#123)
* Use archive_url ARG to modify download URL
* Make ARG quoting consistent
2022-06-03 11:10:01 +02:00
Markus Opolka
f5da02dd55 Upgrading to Version 5.3.17+220525 2022-05-31 07:42:44 +02:00
22 changed files with 84 additions and 720 deletions

View File

@@ -1,9 +1,5 @@
FROM php:8.0-apache
FROM docker.io/php:8.0-apache
LABEL maintainer="markus@martialblog.de"
ARG version='3.28.12+220524'
ARG sha256_checksum='18437545fc0b86900663d494508284a1a5340e6db4fc9eb7a598fb8304dd8def'
ARG USER=root
ARG LISTEN_PORT=80
# Install OS dependencies
RUN set -ex; \
@@ -50,8 +46,6 @@ RUN set -ex; \
tidy \
zip
ENV LIMESURVEY_VERSION=$version
# Apache configuration
RUN a2enmod headers rewrite remoteip; \
{\
@@ -65,9 +59,16 @@ RUN a2enmod headers rewrite remoteip; \
# Use the default production configuration
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
# Download, unzip and chmod LimeSurvey from official GitHub repository
ARG version="3.28.35+221025"
ARG sha256_checksum="f34dd1196da0c098ebad28109deef54a47643451969cc4a839e284fa35c90e66"
ARG archive_url="https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz"
ARG USER=root
ARG LISTEN_PORT=80
ENV LIMESURVEY_VERSION=$version
# Download, unzip and chmod LimeSurvey from GitHub (defaults to the official LimeSurvey/LimeSurvey repository)
RUN set -ex; \
curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz && \
curl -sSL "${archive_url}" --output /tmp/limesurvey.tar.gz && \
echo "${sha256_checksum} /tmp/limesurvey.tar.gz" | sha256sum -c - && \
\
tar xzvf "/tmp/limesurvey.tar.gz" --strip-components=1 -C /var/www/html/ && \

View File

@@ -1,7 +1,5 @@
FROM php:8.0-fpm-alpine
FROM docker.io/php:8.0-fpm-alpine
LABEL maintainer="markus@martialblog.de"
ARG version='3.28.12+220524'
ARG sha256_checksum='18437545fc0b86900663d494508284a1a5340e6db4fc9eb7a598fb8304dd8def'
# Install OS dependencies
RUN set -ex; \
@@ -35,9 +33,14 @@ RUN set -ex; \
tidy \
zip
# Download, unzip and chmod LimeSurvey from official GitHub repository
ARG version="3.28.35+221025"
ARG sha256_checksum="f34dd1196da0c098ebad28109deef54a47643451969cc4a839e284fa35c90e66"
ARG archive_url="https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz"
ENV LIMESURVEY_VERSION=$version
# Download, unzip and chmod LimeSurvey from GitHub (defaults to the official LimeSurvey/LimeSurvey repository)
RUN set -ex; \
curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz && \
curl -sSL "${archive_url}" --output /tmp/limesurvey.tar.gz && \
echo "${sha256_checksum} /tmp/limesurvey.tar.gz" | sha256sum -c - && \
\
tar xzvf "/tmp/limesurvey.tar.gz" --strip-components=1 -C /var/www/html/ && \

View File

@@ -1,7 +1,5 @@
FROM php:8.0-fpm
FROM docker.io/php:8.0-fpm
LABEL maintainer="markus@martialblog.de"
ARG version='3.28.12+220524'
ARG sha256_checksum='18437545fc0b86900663d494508284a1a5340e6db4fc9eb7a598fb8304dd8def'
# Install OS dependencies
RUN set -ex; \
@@ -48,11 +46,14 @@ RUN set -ex; \
tidy \
zip
ARG version="3.28.35+221025"
ARG sha256_checksum="f34dd1196da0c098ebad28109deef54a47643451969cc4a839e284fa35c90e66"
ARG archive_url="https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz"
ENV LIMESURVEY_VERSION=$version
# Download, unzip and chmod LimeSurvey from official GitHub repository
# Download, unzip and chmod LimeSurvey from GitHub (defaults to the official LimeSurvey/LimeSurvey repository)
RUN set -ex; \
curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz && \
curl -sSL "${archive_url}" --output /tmp/limesurvey.tar.gz && \
echo "${sha256_checksum} /tmp/limesurvey.tar.gz" | sha256sum -c - && \
\
tar xzvf "/tmp/limesurvey.tar.gz" --strip-components=1 -C /var/www/html/ && \

View File

@@ -1,82 +0,0 @@
FROM php:8.0-apache
LABEL maintainer="markus@martialblog.de"
ARG version='4.6.3+210518'
ARG sha256_checksum='3c59afc13d0cf974c465c5f851cb8837117518e94031f5e3a28ba468ad734ce2'
ARG USER=root
ARG LISTEN_PORT=80
# Install OS dependencies
RUN set -ex; \
apt-get update && \
DEBIAN_FRONTEND=noninteractive \
apt-get install --no-install-recommends -y \
\
libldap2-dev \
libfreetype6-dev \
libjpeg-dev \
libonig-dev \
zlib1g-dev \
libc-client-dev \
libkrb5-dev \
libpng-dev \
libpq-dev \
libzip-dev \
libtidy-dev \
libsodium-dev \
netcat \
curl \
\
&& apt-get -y autoclean; apt-get -y autoremove; \
rm -rf /var/lib/apt/lists/*
# Link LDAP library for PHP ldap extension
RUN set -ex; \
ln -fs /usr/lib/x86_64-linux-gnu/libldap.so /usr/lib/
# Install PHP Plugins and Configure PHP imap plugin
RUN set -ex; \
docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr && \
docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \
docker-php-ext-install -j5 \
exif \
gd \
imap \
ldap \
mbstring \
pdo \
pdo_mysql \
pdo_pgsql \
pgsql \
sodium \
tidy \
zip
ENV LIMESURVEY_VERSION=$version
# Apache configuration
RUN a2enmod headers rewrite remoteip; \
{\
echo RemoteIPHeader X-Real-IP ;\
echo RemoteIPTrustedProxy 10.0.0.0/8 ;\
echo RemoteIPTrustedProxy 172.16.0.0/12 ;\
echo RemoteIPTrustedProxy 192.168.0.0/16 ;\
} > /etc/apache2/conf-available/remoteip.conf;\
a2enconf remoteip
# Use the default production configuration
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
# Download, unzip and chmod LimeSurvey from official GitHub repository
RUN set -ex; \
curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz && \
echo "${sha256_checksum} /tmp/limesurvey.tar.gz" | sha256sum -c - && \
\
tar xzvf "/tmp/limesurvey.tar.gz" --strip-components=1 -C /var/www/html/ && \
rm -f "/tmp/limesurvey.tar.gz" && \
chown -R www-data:www-data /var/www/html /etc/apache2
WORKDIR /var/www/html
COPY entrypoint.sh entrypoint.sh
USER $USER
ENTRYPOINT ["/var/www/html/entrypoint.sh"]
CMD ["apache2-foreground"]

View File

@@ -1,154 +0,0 @@
#!/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:-}
DB_MYSQL_ENGINE=${DB_MYSQL_ENGINE:-'MyISAM'}
ENCRYPT_KEYPAIR=${ENCRYPT_KEYPAIR:-}
ENCRYPT_PUBLIC_KEY=${ENCRYPT_PUBLIC_KEY:-}
ENCRYPT_SECRET_KEY=${ENCRYPT_SECRET_KEY:-}
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 [ -n "$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,
'mysqlEngine' => '$DB_MYSQL_ENGINE',
)
);
EOF
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 [ -n "$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
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
php application/commands/console.php updatedb
PHP_UPDATEDB_EXIT_CODE=$?
if [ $PHP_UPDATEDB_EXIT_CODE -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 "$@"

View File

@@ -1,58 +0,0 @@
FROM php:8.0-fpm-alpine
LABEL maintainer="markus@martialblog.de"
ARG version='4.6.3+210518'
ARG sha256_checksum='3c59afc13d0cf974c465c5f851cb8837117518e94031f5e3a28ba468ad734ce2'
# Install OS dependencies
RUN set -ex; \
apk add --no-cache --virtual .build-deps \
freetype-dev \
libpng-dev \
libzip-dev \
libjpeg-turbo-dev \
tidyhtml-dev \
libsodium-dev \
openldap-dev \
oniguruma-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=/usr/include/ --with-jpeg=/usr && \
docker-php-ext-configure imap --with-imap-ssl && \
docker-php-ext-install \
exif \
gd \
imap \
ldap \
mbstring \
pdo \
pdo_mysql \
pdo_pgsql \
pgsql \
sodium \
tidy \
zip
# Download, unzip and chmod LimeSurvey from official GitHub repository
RUN set -ex; \
curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz && \
echo "${sha256_checksum} /tmp/limesurvey.tar.gz" | sha256sum -c - && \
\
tar xzvf "/tmp/limesurvey.tar.gz" --strip-components=1 -C /var/www/html/ && \
\
rm -rf "/tmp/limesurvey.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
WORKDIR /var/www/html
COPY entrypoint.sh entrypoint.sh
ENTRYPOINT ["/var/www/html/entrypoint.sh"]
CMD ["php-fpm"]

View File

@@ -1,147 +0,0 @@
#!/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:-}
DB_MYSQL_ENGINE=${DB_MYSQL_ENGINE:-'MyISAM'}
ENCRYPT_KEYPAIR=${ENCRYPT_KEYPAIR:-}
ENCRYPT_PUBLIC_KEY=${ENCRYPT_PUBLIC_KEY:-}
ENCRYPT_SECRET_KEY=${ENCRYPT_SECRET_KEY:-}
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}
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
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 [ -n "$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,
'mysqlEngine' => '$DB_MYSQL_ENGINE',
)
);
EOF
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 [ -n "$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
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
php application/commands/console.php updatedb
PHP_UPDATEDB_EXIT_CODE=$?
if [ $PHP_UPDATEDB_EXIT_CODE -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 "$@"

View File

@@ -1,67 +0,0 @@
FROM php:8.0-fpm
LABEL maintainer="markus@martialblog.de"
ARG version='4.6.3+210518'
ARG sha256_checksum='3c59afc13d0cf974c465c5f851cb8837117518e94031f5e3a28ba468ad734ce2'
# Install OS dependencies
RUN set -ex; \
apt-get update && \
DEBIAN_FRONTEND=noninteractive \
apt-get install --no-install-recommends -y \
\
libldap2-dev \
libfreetype6-dev \
libjpeg-dev \
libonig-dev \
zlib1g-dev \
libc-client-dev \
libkrb5-dev \
libpng-dev \
libpq-dev \
libzip-dev \
libtidy-dev \
libsodium-dev \
netcat \
\
&& apt-get -y autoclean; apt-get -y autoremove; \
rm -rf /var/lib/apt/lists/*
# Link LDAP library for PHP ldap extension
RUN set -ex; \
ln -fs /usr/lib/x86_64-linux-gnu/libldap.so /usr/lib/
# Install PHP Plugins and Configure PHP imap plugin
RUN set -ex; \
docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr && \
docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \
docker-php-ext-install -j5 \
exif \
gd \
imap \
ldap \
mbstring \
pdo \
pdo_mysql \
pdo_pgsql \
pgsql \
sodium \
tidy \
zip
ENV LIMESURVEY_VERSION=$version
# Download, unzip and chmod LimeSurvey from official GitHub repository
RUN set -ex; \
curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz && \
echo "${sha256_checksum} /tmp/limesurvey.tar.gz" | sha256sum -c - && \
\
tar xzvf "/tmp/limesurvey.tar.gz" --strip-components=1 -C /var/www/html/ && \
rm -f "/tmp/limesurvey.tar.gz" && \
chown -R www-data:www-data /var/www/html
EXPOSE 9000
WORKDIR /var/www/html
COPY entrypoint.sh entrypoint.sh
ENTRYPOINT ["/var/www/html/entrypoint.sh"]
CMD ["php-fpm"]

View File

@@ -1,147 +0,0 @@
#!/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:-}
DB_MYSQL_ENGINE=${DB_MYSQL_ENGINE:-'MyISAM'}
ENCRYPT_KEYPAIR=${ENCRYPT_KEYPAIR:-}
ENCRYPT_PUBLIC_KEY=${ENCRYPT_PUBLIC_KEY:-}
ENCRYPT_SECRET_KEY=${ENCRYPT_SECRET_KEY:-}
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}
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
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 [ -n "$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,
'mysqlEngine' => '$DB_MYSQL_ENGINE',
)
);
EOF
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 [ -n "$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
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
php application/commands/console.php updatedb
PHP_UPDATEDB_EXIT_CODE=$?
if [ $PHP_UPDATEDB_EXIT_CODE -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 "$@"

View File

@@ -1,9 +1,5 @@
FROM php:8.0-apache
FROM docker.io/php:8.0-apache
LABEL maintainer="markus@martialblog.de"
ARG version='5.3.16+220523'
ARG sha256_checksum='146447308ff09a6f4ed9c3fff65422d2f03d38ce1aba8c314eaf6d79366ef2d7'
ARG USER=www-data
ARG LISTEN_PORT=8080
# Install OS dependencies
RUN set -ex; \
@@ -51,8 +47,6 @@ RUN set -ex; \
tidy \
zip
ENV LIMESURVEY_VERSION=$version
# Apache configuration
RUN a2enmod headers rewrite remoteip; \
{\
@@ -66,9 +60,16 @@ RUN a2enmod headers rewrite remoteip; \
# Use the default production configuration
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
# Download, unzip and chmod LimeSurvey from official GitHub repository
ARG version="5.4.8+221024"
ARG sha256_checksum="8445c4f14dee4b16513a19d7e5298e86da885d02823b58ded9905496f558132c"
ARG archive_url="https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz"
ARG USER=www-data
ARG LISTEN_PORT=8080
ENV LIMESURVEY_VERSION=$version
# Download, unzip and chmod LimeSurvey from GitHub (defaults to the official LimeSurvey/LimeSurvey repository)
RUN set -ex; \
curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz && \
curl -sSL "${archive_url}" --output /tmp/limesurvey.tar.gz && \
echo "${sha256_checksum} /tmp/limesurvey.tar.gz" | sha256sum -c - && \
\
tar xzvf "/tmp/limesurvey.tar.gz" --strip-components=1 -C /var/www/html/ && \

View File

@@ -1,8 +1,5 @@
FROM php:8.0-fpm-alpine
FROM docker.io/php:8.0-fpm-alpine
LABEL maintainer="markus@martialblog.de"
ARG version='5.3.16+220523'
ARG sha256_checksum='146447308ff09a6f4ed9c3fff65422d2f03d38ce1aba8c314eaf6d79366ef2d7'
ARG USER=www-data
# Install OS dependencies
RUN set -ex; \
@@ -37,9 +34,15 @@ RUN set -ex; \
tidy \
zip
# Download, unzip and chmod LimeSurvey from official GitHub repository
ARG version="5.4.8+221024"
ARG sha256_checksum="8445c4f14dee4b16513a19d7e5298e86da885d02823b58ded9905496f558132c"
ARG archive_url="https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz"
ARG USER=www-data
ENV LIMESURVEY_VERSION=$version
# Download, unzip and chmod LimeSurvey from GitHub (defaults to the official LimeSurvey/LimeSurvey repository)
RUN set -ex; \
curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz && \
curl -sSL "${archive_url}" --output /tmp/limesurvey.tar.gz && \
echo "${sha256_checksum} /tmp/limesurvey.tar.gz" | sha256sum -c - && \
\
tar xzvf "/tmp/limesurvey.tar.gz" --strip-components=1 -C /var/www/html/ && \

View File

@@ -1,8 +1,5 @@
FROM php:8.0-fpm
FROM docker.io/php:8.0-fpm
LABEL maintainer="markus@martialblog.de"
ARG version='5.3.16+220523'
ARG sha256_checksum='146447308ff09a6f4ed9c3fff65422d2f03d38ce1aba8c314eaf6d79366ef2d7'
ARG USER=www-data
# Install OS dependencies
RUN set -ex; \
@@ -49,11 +46,15 @@ RUN set -ex; \
tidy \
zip
ARG version="5.4.8+221024"
ARG sha256_checksum="8445c4f14dee4b16513a19d7e5298e86da885d02823b58ded9905496f558132c"
ARG archive_url="https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz"
ARG USER=www-data
ENV LIMESURVEY_VERSION=$version
# Download, unzip and chmod LimeSurvey from official GitHub repository
# Download, unzip and chmod LimeSurvey from GitHub (defaults to the official LimeSurvey/LimeSurvey repository)
RUN set -ex; \
curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz && \
curl -sSL "${archive_url}" --output /tmp/limesurvey.tar.gz && \
echo "${sha256_checksum} /tmp/limesurvey.tar.gz" | sha256sum -c - && \
\
tar xzvf "/tmp/limesurvey.tar.gz" --strip-components=1 -C /var/www/html/ && \

View File

@@ -2,6 +2,15 @@
Every Pull Request is welcome.
## Branches
Choosing a proper name for a branch helps us identify its purpose and possibly find an associated bug or feature. Generally a branch name should include a topic such as `fix` or `feature` followed by a description. Branches should have only changes relevant to a specific issue.
```
git checkout -b fix/bug-in-connection
git checkout -b feature/improved-config-handling
git checkout -b doc/fix-typo
```
## Upgrading the Version
The versions in this repository should correspond to the [GitHub LimeSurvey Releases](https://github.com/LimeSurvey/LimeSurvey/releases)
@@ -12,19 +21,19 @@ To update the version, simply update ARG variables for version and corresponding
# Version from GitHub Tags
# sha256 of tar.gz from GitHub Releases
$ grep ARG 4.0/apache/Dockerfile
ARG version='4.3.13+200824'
$ grep ARG 5.0/apache/Dockerfile
ARG version='5.3.13+200824'
ARG sha256_checksum='4e9c6f20e'
```
It is best to use the upgrade shell script:
```bash
./upgrade.sh 4.3.13+200824
./upgrade.sh 5.3.13+200824
# Check if sha256 is correct
git add 4.0/ && git commit -m 'Upgrading to Version 4.3.13+200824'
git tag 4.3.13-200824
git add 5.0/ && git commit -m 'Upgrading to Version 5.3.13+200824'
git tag 5.3.13-200824
```
## Testing

View File

@@ -1,14 +1,14 @@
# .PHONY: apache fpm fpm-alpine
RUNTIME?=podman
apache-lts:
docker build --pull -t docker.io/martialblog/limesurvey:3-apache 3.0/apache
$(RUNTIME) build --pull -t docker.io/martialblog/limesurvey:3-apache 3.0/apache
apache-latest:
docker build --pull -t docker.io/martialblog/limesurvey:5-apache 5.0/apache
$(RUNTIME) build --pull -t docker.io/martialblog/limesurvey:5-apache 5.0/apache
fpm-alpine-lts:
docker build --pull -t docker.io/martialblog/limesurvey:3-fpm-alpine 3.0/fpm-alpine
$(RUNTIME) build --pull -t docker.io/martialblog/limesurvey:3-fpm-alpine 3.0/fpm-alpine
fpm-alpine-latest:
docker build --pull -t docker.io/martialblog/limesurvey:5-fpm-alpine 5.0/fpm-alpine
$(RUNTIME) build --pull -t docker.io/martialblog/limesurvey:5-fpm-alpine 5.0/fpm-alpine
fpm-lts:
docker build --pull -t docker.io/martialblog/limesurvey:3-fpm 3.0/fpm
$(RUNTIME) build --pull -t docker.io/martialblog/limesurvey:3-fpm 3.0/fpm
fpm-latest:
docker build --pull -t docker.io/martialblog/limesurvey:5-fpm 5.0/fpm
$(RUNTIME) build --pull -t docker.io/martialblog/limesurvey:5-fpm 5.0/fpm

View File

@@ -117,7 +117,7 @@ For further details on the settings see: https://manual.limesurvey.org/Data_encr
| BASE_URL | Application Base URL |
| URL_FORMAT | URL Format. path or get |
| TABLE_SESSION | Enable table sessions (true) |
| SHOW_SCRIPT_NAME | Script name in URL (true|false). Default: true |
| SHOW_SCRIPT_NAME | Script name in URL (true\|false). Default: true |
| DEBUG | Debug level (0, 1, 2). Default: 0 |
| DEBUG_SQL | SQL Debug level (0, 1, 2). Default 0 |
| ENCRYPT_KEYPAIR | Data encryption keypair |

View File

@@ -1,7 +1,7 @@
version: '3'
services:
limesurvey:
image: martialblog/limesurvey:latest
image: docker.io/martialblog/limesurvey:latest
restart: always
environment:
- DB_TYPE=pgsql
@@ -22,7 +22,7 @@ services:
depends_on:
- db
db:
image: postgres:10-alpine
image: docker.io/postgres:10-alpine
restart: always
volumes:
- db-data:/var/lib/postgresql

View File

@@ -33,14 +33,14 @@ services:
environment:
- "HOSTNAMES=www.example.com example.com"
certbot:
image: certbot/certbot
image: docker.io/certbot/certbot
restart: unless-stopped
volumes:
- ./certbot/conf:/etc/letsencrypt
- ./certbot/www:/var/www/certbot
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
lime-db:
image: mysql:5.7
image: docker.io/mysql:5.7
environment:
- "MYSQL_USER=limesurvey"
- "MYSQL_DATABASE=limesurvey"

View File

@@ -17,7 +17,7 @@ services:
- "DB_PASSWORD=secret"
- "ADMIN_PASSWORD=foobar"
lime-web:
image: nginx:alpine
image: docker.io/nginx:alpine
links:
- limesurvey
depends_on:
@@ -28,7 +28,7 @@ services:
- ./examples/nginx.conf:/etc/nginx/nginx.conf:ro
- lime:/var/www/html
lime-db:
image: mysql:5.7
image: docker.io/mysql:5.7
environment:
- "MYSQL_USER=limesurvey"
- "MYSQL_DATABASE=limesurvey"

View File

@@ -17,7 +17,7 @@ services:
- "DB_PASSWORD=secret"
- "ADMIN_PASSWORD=foobar"
lime-web:
image: nginx
image: docker.io/nginx
links:
- limesurvey
ports:
@@ -26,7 +26,7 @@ services:
- ./examples/nginx.conf:/etc/nginx/nginx.conf:ro
- lime:/var/www/html
lime-db:
image: mysql:5.7
image: docker.io/mysql:5.7
environment:
- "MYSQL_USER=limesurvey"
- "MYSQL_DATABASE=limesurvey"

View File

@@ -22,7 +22,7 @@ services:
- "DB_PASSWORD=secret"
- "ADMIN_PASSWORD=foobar"
lime-db:
image: postgres:10
image: docker.io/postgres:10
volumes:
- db-data:/var/lib/postgresql/data
environment:

View File

@@ -24,7 +24,7 @@ services:
- "PUBLIC_URL=http://localhost:8888/limesurvey"
- "BASE_URL=http://localhost:8888/limesurvey"
traefik:
image: "traefik:v2.5"
image: docker.io/traefik:v2.5
container_name: "traefik"
command:
- "--api.insecure=true"
@@ -37,7 +37,7 @@ services:
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
lime-db:
image: mysql:5.7
image: docker.io/mysql:5.7
environment:
- "MYSQL_USER=limesurvey"
- "MYSQL_DATABASE=limesurvey"

View File

@@ -20,7 +20,7 @@ services:
# If you require an empty table prefix, use a space as the DB_TABLE_PREFIX
# - "DB_TABLE_PREFIX= "
lime-db:
image: mysql:5.7
image: docker.io/mysql:5.7
environment:
- "MYSQL_USER=limesurvey"
- "MYSQL_DATABASE=limesurvey"