Compare commits

...

29 Commits

Author SHA1 Message Date
Markus Opolka
f290fc7f1c Upgrading to Version 6.0.6+230508 2023-05-19 09:03:27 +02:00
Markus Opolka
20c1fafdf6 Upgrading to LTS Version 5.6.20+230516 2023-05-19 09:03:02 +02:00
Markus Opolka
281cc199aa Upgrading to Version 6.0.5+230502 2023-05-09 08:36:05 +02:00
Markus Opolka
d15b0a2693 Upgrading to LTS Version 5.6.18+230503 2023-05-09 08:35:37 +02:00
Markus Opolka
164767fe97 Upgrading to Version 6.0.4+230427 2023-05-03 20:17:42 +02:00
Markus Opolka
0478c67f4a Upgrading to LTS Version 5.6.17+230426 2023-05-03 20:17:05 +02:00
Markus Opolka
07fea8dfcc Upgrading to Version 6.0.2+230417 2023-04-25 10:06:46 +02:00
Markus Opolka
4250f57653 Upgrading to LTS Version 5.6.16+230418 2023-04-25 10:06:20 +02:00
Markus Opolka
919627c293 Upgrading to Version 3.28.56+230404 2023-04-25 09:56:02 +02:00
Markus Opolka
964ed7b38e Fix LTS platform build (#150) 2023-04-21 08:22:03 +02:00
Markus Opolka
9b1ee53a4a Upgrading to LTS Version 5.6.15+230412 2023-04-20 08:23:23 +02:00
Markus Opolka
d3c5ed4e35 Fix hadolint Action config 2023-04-18 15:12:00 +02:00
Markus Opolka
b1b32c2380 Upgrading to Version 6.0.1+230411 2023-04-18 09:37:50 +02:00
renovate[bot]
f79d1e3a9d Update hadolint/hadolint-action action to v3 (#147)
* Update hadolint/hadolint-action action to v3

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Markus Opolka <markus.opolka@netways.de>
2023-04-14 10:28:31 +02:00
Markus Opolka
bfa8bbb85a Merge pull request #146 from martialblog/renovate/docker-build-push-action-4.x
Update docker/build-push-action action to v4
2023-04-13 13:47:50 +02:00
Markus Opolka
9ff5cdf1cb Merge pull request #145 from martialblog/renovate/plexsystems-container-structure-test-action-0.x
Update plexsystems/container-structure-test-action action to v0.3.0
2023-04-13 13:17:49 +02:00
renovate[bot]
3552c1b90d Update docker/build-push-action action to v4 2023-04-13 11:04:01 +00:00
renovate[bot]
76a7f28105 Update plexsystems/container-structure-test-action action to v0.3.0 2023-04-13 11:03:54 +00:00
Markus Opolka
36d49a4fbb Merge pull request #143 from martialblog/renovate/hadolint-hadolint-action-1.x
Update hadolint/hadolint-action action to v1.7.0
2023-04-13 08:17:04 +02:00
renovate[bot]
b9c9c3f854 Update hadolint/hadolint-action action to v1.7.0 2023-04-13 06:07:46 +00:00
renovate[bot]
6e06dec555 Configure Renovate (#98)
* Add renovate.json

---------

Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Markus Opolka <markus@martialblog.de>
2023-04-13 08:07:09 +02:00
Markus Opolka
b9627cda92 Merge pull request #141 from martialblog/chore/update-gh-actions
Update GitHub Actions
2023-04-12 13:05:19 +02:00
Markus Opolka
0d5d7e6e4d Update GitHub Actions 2023-04-12 13:00:38 +02:00
Markus Opolka
eb3f48b0dc Merge pull request #139 from martialblog/release-6
Update Repository for new 6.0 Release
2023-04-12 11:40:39 +02:00
Markus Opolka
2f82a36dc0 Move GitHub Actions for ARM for separate file
- We will include these long running jobs only on special branches
2023-04-12 11:37:36 +02:00
Markus Opolka
128e7b4595 Update GitHub Action versions
- Mainly due to Node 12 deprecation
2023-04-12 11:06:12 +02:00
Markus Opolka
663bf2f03b Add ARM build in GitHub Actions
- Hint: Tried to use the plattform parameter of the build-push-action,
   however this failed with an error in the Jobs.
   Therefore, I used a matrix with the platforms.
 - The ARM build takes a long time.
2023-04-12 10:57:51 +02:00
Markus Opolka
0732424f79 Update Repository for new 6.0 Release 2023-04-12 10:54:54 +02:00
Markus Opolka
1c709f7780 Upgrading to Version 5.6.14+230403 2023-04-05 14:29:53 +02:00
33 changed files with 913 additions and 99 deletions

9
.github/renovate.json vendored Normal file
View File

@@ -0,0 +1,9 @@
{
"extends": [
"config:base"
],
"enabledManagers": ["dockerfile", "github-actions"],
"dockerfile": {
"ignorePaths": ["4.0", "nginx-certbot"]
}
}

View File

@@ -2,7 +2,7 @@ name: Publish Latest Container Images
on:
push:
tags:
- '5.*'
- '6.*'
jobs:
lint_dockerfiles:
@@ -11,15 +11,15 @@ jobs:
strategy:
matrix:
dockerfile:
- 5.0/apache/Dockerfile
- 5.0/fpm-alpine/Dockerfile
- 5.0/fpm/Dockerfile
- 6.0/apache/Dockerfile
- 6.0/fpm-alpine/Dockerfile
- 6.0/fpm/Dockerfile
steps:
- uses: actions/checkout@v2
- uses: hadolint/hadolint-action@v1.5.0
- uses: actions/checkout@v3
- uses: hadolint/hadolint-action@v3.1.0
with:
dockerfile: ${{ matrix.dockerfile }}
ignore: DL4006 DL3008 DL3018
ignore: "DL4006,DL3008,DL3018"
push_images_to_registries:
name: Push Container Images to registries
@@ -31,20 +31,24 @@ jobs:
contents: read
steps:
- name: 'Check out the repo'
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: 'Set up QEMU'
uses: docker/setup-qemu-action@v2
with:
platforms: 'arm64,arm'
- name: 'Set up Docker Buildx'
uses: docker/setup-buildx-action@v1
uses: docker/setup-buildx-action@v2
with:
buildkitd-flags: --debug
- name: 'Log in to DockerHub'
if: github.event_name != 'pull_request'
uses: docker/login-action@v1
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
- name: 'Apache variant metadata'
id: metadata-apache
uses: docker/metadata-action@v3
uses: docker/metadata-action@v4
with:
images: |
docker.io/martialblog/limesurvey
@@ -55,16 +59,17 @@ jobs:
latest=true
suffix=-apache
- name: 'Build and push latest Apache container images'
uses: docker/build-push-action@v2
uses: docker/build-push-action@v4
with:
context: 5.0/apache
context: 6.0/apache
push: true
tags: ${{ steps.metadata-apache.outputs.tags }}
labels: ${{ steps.metadata-apache.outputs.labels }}
platforms: linux/amd64,linux/arm64
- name: 'FPM variant metadata'
id: metadata-fpm
uses: docker/metadata-action@v3
uses: docker/metadata-action@v4
with:
images: |
docker.io/martialblog/limesurvey
@@ -75,16 +80,17 @@ jobs:
latest=false
suffix=-fpm
- name: 'Build and push latest fpm container images'
uses: docker/build-push-action@v2
uses: docker/build-push-action@v4
with:
context: 5.0/fpm
context: 6.0/fpm
push: true
tags: ${{ steps.metadata-fpm.outputs.tags }}
labels: ${{ steps.metadata-fpm.outputs.labels }}
platforms: linux/amd64,linux/arm64
- name: 'FPM Alpine variant metadata'
id: metadata-fpm-alpine
uses: docker/metadata-action@v3
uses: docker/metadata-action@v4
with:
images: |
docker.io/martialblog/limesurvey
@@ -95,9 +101,10 @@ jobs:
latest=false
suffix=-fpm-alpine
- name: 'Build and push latest fpm-alpine container images'
uses: docker/build-push-action@v2
uses: docker/build-push-action@v4
with:
context: 5.0/fpm-alpine
context: 6.0/fpm-alpine
push: true
tags: ${{ steps.metadata-fpm-alpine.outputs.tags }}
labels: ${{ steps.metadata-fpm-alpine.outputs.labels }}
platforms: linux/amd64,linux/arm64

View File

@@ -2,7 +2,7 @@ name: Publish LTS Container Images
on:
push:
tags:
- '3.*'
- '5.*'
jobs:
lint_dockerfiles:
@@ -11,15 +11,15 @@ jobs:
strategy:
matrix:
dockerfile:
- 3.0/apache/Dockerfile
- 3.0/fpm-alpine/Dockerfile
- 3.0/fpm/Dockerfile
- 5.0/apache/Dockerfile
- 5.0/fpm-alpine/Dockerfile
- 5.0/fpm/Dockerfile
steps:
- uses: actions/checkout@v2
- uses: hadolint/hadolint-action@v1.5.0
- uses: actions/checkout@v3
- uses: hadolint/hadolint-action@v3.1.0
with:
dockerfile: ${{ matrix.dockerfile }}
ignore: DL4006 DL3008 DL3018
ignore: "DL4006,DL3008,DL3018"
push_images_to_registries:
name: 'Push container images to registries'
@@ -31,20 +31,24 @@ jobs:
contents: read
steps:
- name: 'Check out the repo'
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: 'Set up QEMU'
uses: docker/setup-qemu-action@v2
with:
platforms: 'arm64,arm'
- name: 'Set up Docker Buildx'
uses: docker/setup-buildx-action@v1
uses: docker/setup-buildx-action@v2
with:
buildkitd-flags: --debug
- name: 'Log in to DockerHub'
if: github.event_name != 'pull_request'
uses: docker/login-action@v1
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
- name: 'Apache variant metadata'
id: metadata-apache
uses: docker/metadata-action@v3
uses: docker/metadata-action@v4
with:
images: |
docker.io/martialblog/limesurvey
@@ -55,16 +59,17 @@ jobs:
latest=false
suffix=-apache
- name: 'Build and push LTS apache container images'
uses: docker/build-push-action@v2
uses: docker/build-push-action@v4
with:
context: 3.0/apache
context: 5.0/apache
push: true
tags: ${{ steps.metadata-apache.outputs.tags }}
labels: ${{ steps.metadata-apache.outputs.labels }}
platforms: linux/amd64,linux/arm64
- name: 'FPM variant metadata'
id: metadata-fpm
uses: docker/metadata-action@v3
uses: docker/metadata-action@v4
with:
images: |
docker.io/martialblog/limesurvey
@@ -75,16 +80,17 @@ jobs:
latest=false
suffix=-fpm
- name: 'Build and push LTS fpm container images'
uses: docker/build-push-action@v2
uses: docker/build-push-action@v4
with:
context: 3.0/fpm
context: 5.0/fpm
push: true
tags: ${{ steps.metadata-fpm.outputs.tags }}
labels: ${{ steps.metadata-apache.outputs.labels }}
platforms: linux/amd64,linux/arm64
- name: 'FPM Alpine variant metadata'
id: metadata-fpm-alpine
uses: docker/metadata-action@v3
uses: docker/metadata-action@v4
with:
images: |
docker.io/martialblog/limesurvey
@@ -95,9 +101,10 @@ jobs:
latest=false
suffix=-fpm-alpine
- name: 'Build and push LTS fpm-alpine container images'
uses: docker/build-push-action@v2
uses: docker/build-push-action@v4
with:
context: 3.0/fpm-alpine
context: 5.0/fpm-alpine
push: true
tags: ${{ steps.metadata-fpm-alpine.outputs.tags }}
labels: ${{ steps.metadata-apache.outputs.labels }}
platforms: linux/amd64,linux/arm64

View File

@@ -9,16 +9,16 @@ jobs:
strategy:
matrix:
dockerfile:
- 3.0/apache/Dockerfile
- 3.0/fpm-alpine/Dockerfile
- 3.0/fpm/Dockerfile
- 5.0/apache/Dockerfile
- 5.0/fpm-alpine/Dockerfile
- 5.0/fpm/Dockerfile
- 6.0/apache/Dockerfile
- 6.0/fpm-alpine/Dockerfile
- 6.0/fpm/Dockerfile
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: hadolint/hadolint-action@v1.5.0
- uses: actions/checkout@v3
- uses: hadolint/hadolint-action@v3.1.0
with:
dockerfile: ${{ matrix.dockerfile }}
ignore: DL4006 DL3008 DL3018
ignore: "DL4006,DL3008,DL3018"

View File

@@ -0,0 +1,48 @@
name: Test ARM Container Images
on:
push:
branches:
- 'arm/**'
pull_request:
branches:
- 'arm/**'
jobs:
test_images:
name: Test Latest Container Images
runs-on: ubuntu-latest
strategy:
matrix:
context:
- apache
- fpm-alpine
- fpm
platform:
- linux/arm64
steps:
- name: 'Check out the repo'
uses: actions/checkout@v3
- name: 'Set up QEMU'
uses: docker/setup-qemu-action@v2
with:
platforms: 'arm64,arm'
- name: 'Set up Docker Buildx'
uses: docker/setup-buildx-action@v2
- name: 'Build Container images'
uses: docker/build-push-action@v4
with:
context: 6.0/${{ matrix.context }}
push: false
load: true
tags: docker.io/martialblog/limesurvey:6-${{ matrix.context }}
platforms: ${{ matrix.platform }}
- name: 'Run Structure tests'
uses: plexsystems/container-structure-test-action@v0.3.0
with:
image: docker.io/martialblog/limesurvey:6-${{ matrix.context }}
config: tests/${{ matrix.context }}-tests.yaml

View File

@@ -4,7 +4,7 @@ on: [push, pull_request]
jobs:
test_images:
name: Test Latest Container Images with Trivy
name: Test Latest Container Images
runs-on: ubuntu-latest
strategy:
matrix:
@@ -14,21 +14,26 @@ jobs:
- fpm
steps:
- name: 'Check out the repo'
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: 'Set up QEMU'
uses: docker/setup-qemu-action@v2
with:
platforms: 'arm64,arm'
- name: 'Set up Docker Buildx'
uses: docker/setup-buildx-action@v1
uses: docker/setup-buildx-action@v2
- name: 'Build Container images'
uses: docker/build-push-action@v2
uses: docker/build-push-action@v4
with:
context: 5.0/${{ matrix.context }}
context: 6.0/${{ matrix.context }}
push: false
load: true
tags: docker.io/martialblog/limesurvey:5-${{ matrix.context }}
tags: docker.io/martialblog/limesurvey:6-${{ matrix.context }}
- name: 'Run Structure tests'
uses: plexsystems/container-structure-test-action@v0.2.0
uses: plexsystems/container-structure-test-action@v0.3.0
with:
image: docker.io/martialblog/limesurvey:5-${{ matrix.context }}
image: docker.io/martialblog/limesurvey:6-${{ matrix.context }}
config: tests/${{ matrix.context }}-tests.yaml

View File

@@ -4,7 +4,7 @@ on: [push, pull_request]
jobs:
test_images:
name: Test LTS Container Images with Trivy
name: Test LTS Container Images
runs-on: ubuntu-latest
strategy:
matrix:
@@ -14,21 +14,24 @@ jobs:
- fpm
steps:
- name: 'Check out the repo'
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: 'Set up QEMU'
uses: docker/setup-qemu-action@v2
- name: 'Set up Docker Buildx'
uses: docker/setup-buildx-action@v1
uses: docker/setup-buildx-action@v2
- name: 'Build Container images'
uses: docker/build-push-action@v2
uses: docker/build-push-action@v4
with:
context: 3.0/${{ matrix.context }}
context: 5.0/${{ matrix.context }}
push: false
load: true
tags: docker.io/martialblog/limesurvey:3-${{ matrix.context }}
tags: docker.io/martialblog/limesurvey:5-${{ matrix.context }}
- name: 'Run Structure tests'
uses: plexsystems/container-structure-test-action@v0.2.0
uses: plexsystems/container-structure-test-action@v0.3.0
with:
image: docker.io/martialblog/limesurvey:3-${{ matrix.context }}
image: docker.io/martialblog/limesurvey:5-${{ matrix.context }}
config: tests/${{ matrix.context }}-tests.yaml

View File

@@ -59,8 +59,8 @@ RUN a2enmod headers rewrite remoteip; \
# Use the default production configuration
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
ARG version="3.28.55+230328"
ARG sha256_checksum="7f820259aa68fcd2fff7a23e9261ad65af0b28085ef93a69bf14cc068ee829c5"
ARG version="3.28.56+230404"
ARG sha256_checksum="abfdc800d97feabbd448df4a2cfa72a954d2f6b013475132b0691ac2563e7228"
ARG archive_url="https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz"
ARG USER=root
ARG LISTEN_PORT=80

View File

@@ -33,8 +33,8 @@ RUN set -ex; \
tidy \
zip
ARG version="3.28.55+230328"
ARG sha256_checksum="7f820259aa68fcd2fff7a23e9261ad65af0b28085ef93a69bf14cc068ee829c5"
ARG version="3.28.56+230404"
ARG sha256_checksum="abfdc800d97feabbd448df4a2cfa72a954d2f6b013475132b0691ac2563e7228"
ARG archive_url="https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz"
ENV LIMESURVEY_VERSION=$version

View File

@@ -46,8 +46,8 @@ RUN set -ex; \
tidy \
zip
ARG version="3.28.55+230328"
ARG sha256_checksum="7f820259aa68fcd2fff7a23e9261ad65af0b28085ef93a69bf14cc068ee829c5"
ARG version="3.28.56+230404"
ARG sha256_checksum="abfdc800d97feabbd448df4a2cfa72a954d2f6b013475132b0691ac2563e7228"
ARG archive_url="https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz"
ENV LIMESURVEY_VERSION=$version

View File

@@ -60,8 +60,8 @@ RUN a2enmod headers rewrite remoteip; \
# Use the default production configuration
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
ARG version="5.6.12+230327"
ARG sha256_checksum="35e1fe11b043a02b5197cf2b0297f456f2f4b4f254ebc1b7070e88bf0b06ba48"
ARG version="5.6.20+230516"
ARG sha256_checksum="a22e9f6a4fad21b7c52df2fed0cf86baf5651466f2715026bd16b0cf8578ccb8"
ARG archive_url="https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz"
ARG USER=www-data
ARG LISTEN_PORT=8080

View File

@@ -34,8 +34,8 @@ RUN set -ex; \
tidy \
zip
ARG version="5.6.12+230327"
ARG sha256_checksum="35e1fe11b043a02b5197cf2b0297f456f2f4b4f254ebc1b7070e88bf0b06ba48"
ARG version="5.6.20+230516"
ARG sha256_checksum="a22e9f6a4fad21b7c52df2fed0cf86baf5651466f2715026bd16b0cf8578ccb8"
ARG archive_url="https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz"
ARG USER=www-data
ENV LIMESURVEY_VERSION=$version

View File

@@ -46,8 +46,8 @@ RUN set -ex; \
tidy \
zip
ARG version="5.6.12+230327"
ARG sha256_checksum="35e1fe11b043a02b5197cf2b0297f456f2f4b4f254ebc1b7070e88bf0b06ba48"
ARG version="5.6.20+230516"
ARG sha256_checksum="a22e9f6a4fad21b7c52df2fed0cf86baf5651466f2715026bd16b0cf8578ccb8"
ARG archive_url="https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz"
ARG USER=www-data
ENV LIMESURVEY_VERSION=$version

86
6.0/apache/Dockerfile Normal file
View File

@@ -0,0 +1,86 @@
FROM docker.io/php:8.1-apache
LABEL maintainer="markus@martialblog.de"
# 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
# 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"
ARG version="6.0.6+230508"
ARG sha256_checksum="5e2f42e4169a580cc254e58586549e6ed1a91e01d3af332538e8c5de50f2895e"
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 "${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/ && \
rm -f "/tmp/limesurvey.tar.gz" && \
chown -R "$USER:$USER" /var/www/html /etc/apache2
EXPOSE $LISTEN_PORT
WORKDIR /var/www/html
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
COPY vhosts-access-log.conf /etc/apache2/conf-enabled/other-vhosts-access-log.conf
USER $USER
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["apache2-foreground"]

172
6.0/apache/entrypoint.sh Executable file
View File

@@ -0,0 +1,172 @@
#!/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:-}
ENCRYPT_NONCE=${ENCRYPT_NONCE:-}
ENCRYPT_SECRET_BOX_KEY=${ENCRYPT_SECRET_BOX_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'}
SHOW_SCRIPT_NAME=${SHOW_SCRIPT_NAME:-'true'}
TABLE_SESSION=${TABLE_SESSION:-}
DEBUG=${DEBUG:-0}
DEBUG_SQL=${DEBUG_SQL:-0}
LISTEN_PORT=${LISTEN_PORT:-"8080"}
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//[[:space:]]/}',
),
//'session' => array (
// 'class' => 'application.core.web.DbHttpSession',
// 'connectionID' => 'db',
// 'sessionTableName' => '{{sessions}}',
//),
'urlManager' => array(
'urlFormat' => '$URL_FORMAT',
'rules' => array(),
'showScriptName' => $SHOW_SCRIPT_NAME,
),
'request' => array(
'baseUrl' => '$BASE_URL',
),
),
'config'=>array(
'publicurl'=>'$PUBLIC_URL',
'debug'=>$DEBUG,
'debugsql'=>$DEBUG_SQL,
'mysqlEngine' => '$DB_MYSQL_ENGINE',
)
);
EOF
fi
# Enable Table Sessions if required
if [ -n "$TABLE_SESSION" ]; then
echo 'Info: Setting Table Session'
# Remove the comments in the config
sed -i "s/\/\///g" application/config/config.php
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';
\$config['encryptionnonce'] = '$ENCRYPT_NONCE';
\$config['encryptionsecretboxkey'] = '$ENCRYPT_SECRET_BOX_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

@@ -0,0 +1,3 @@
SetEnvIF User-Agent "(?i)(check|health|probe)" dontlog
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined env=!dontlog

63
6.0/fpm-alpine/Dockerfile Normal file
View File

@@ -0,0 +1,63 @@
FROM docker.io/php:8.1-fpm-alpine
LABEL maintainer="markus@martialblog.de"
# 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
ARG version="6.0.6+230508"
ARG sha256_checksum="5e2f42e4169a580cc254e58586549e6ed1a91e01d3af332538e8c5de50f2895e"
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 "${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/ && \
\
rm -rf "/tmp/limesurvey.tar.gz" \
/var/www/html/docs \
/var/www/html/tests \
/var/www/html/*.md && \
chown -R "${USER}:root" /var/www/ ; \
chmod -R g=u /var/www
EXPOSE 9000
WORKDIR /var/www/html
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
USER $USER
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["php-fpm"]

165
6.0/fpm-alpine/entrypoint.sh Executable file
View File

@@ -0,0 +1,165 @@
#!/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:-}
ENCRYPT_NONCE=${ENCRYPT_NONCE:-}
ENCRYPT_SECRET_BOX_KEY=${ENCRYPT_SECRET_BOX_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'}
SHOW_SCRIPT_NAME=${SHOW_SCRIPT_NAME:-'true'}
TABLE_SESSION=${TABLE_SESSION:-}
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//[[:space:]]/}',
),
//'session' => array (
// 'class' => 'application.core.web.DbHttpSession',
// 'connectionID' => 'db',
// 'sessionTableName' => '{{sessions}}',
//),
'urlManager' => array(
'urlFormat' => '$URL_FORMAT',
'rules' => array(),
'showScriptName' => $SHOW_SCRIPT_NAME,
),
'request' => array(
'baseUrl' => '$BASE_URL',
),
),
'config'=>array(
'publicurl'=>'$PUBLIC_URL',
'debug'=>$DEBUG,
'debugsql'=>$DEBUG_SQL,
'mysqlEngine' => '$DB_MYSQL_ENGINE',
)
);
EOF
fi
# Enable Table Sessions if required
if [ -n "$TABLE_SESSION" ]; then
echo 'Info: Setting Table Session'
# Remove the comments in the config
sed -i "s/\/\///g" application/config/config.php
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';
\$config['encryptionnonce'] = '$ENCRYPT_NONCE';
\$config['encryptionsecretboxkey'] = '$ENCRYPT_SECRET_BOX_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 "$@"

70
6.0/fpm/Dockerfile Normal file
View File

@@ -0,0 +1,70 @@
FROM docker.io/php:8.1-fpm
LABEL maintainer="markus@martialblog.de"
# 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
ARG version="6.0.6+230508"
ARG sha256_checksum="5e2f42e4169a580cc254e58586549e6ed1a91e01d3af332538e8c5de50f2895e"
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 "${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/ && \
rm -f "/tmp/limesurvey.tar.gz" && \
chown -R "$USER:$USER" /var/www/html
EXPOSE 9000
WORKDIR /var/www/html
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
USER $USER
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["php-fpm"]

165
6.0/fpm/entrypoint.sh Executable file
View File

@@ -0,0 +1,165 @@
#!/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:-}
ENCRYPT_NONCE=${ENCRYPT_NONCE:-}
ENCRYPT_SECRET_BOX_KEY=${ENCRYPT_SECRET_BOX_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'}
SHOW_SCRIPT_NAME=${SHOW_SCRIPT_NAME:-'true'}
TABLE_SESSION=${TABLE_SESSION:-}
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//[[:space:]]/}',
),
//'session' => array (
// 'class' => 'application.core.web.DbHttpSession',
// 'connectionID' => 'db',
// 'sessionTableName' => '{{sessions}}',
//),
'urlManager' => array(
'urlFormat' => '$URL_FORMAT',
'rules' => array(),
'showScriptName' => $SHOW_SCRIPT_NAME,
),
'request' => array(
'baseUrl' => '$BASE_URL',
),
),
'config'=>array(
'publicurl'=>'$PUBLIC_URL',
'debug'=>$DEBUG,
'debugsql'=>$DEBUG_SQL,
'mysqlEngine' => '$DB_MYSQL_ENGINE',
)
);
EOF
fi
# Enable Table Sessions if required
if [ -n "$TABLE_SESSION" ]; then
echo 'Info: Setting Table Session'
# Remove the comments in the config
sed -i "s/\/\///g" application/config/config.php
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';
\$config['encryptionnonce'] = '$ENCRYPT_NONCE';
\$config['encryptionsecretboxkey'] = '$ENCRYPT_SECRET_BOX_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

@@ -59,3 +59,9 @@ make fpm-alpine-latest
container-structure-test test --image docker.io/martialblog/limesurvey:5-fpm --config tests/fpm-tests.yaml
```
### ARM Platform
Changes related to the ARM platform should use branches starting with the `arm/` prefix, this ensures the GitHub Actions are triggered.
Background: ARM builds take a long time to finish on the GitHub Runners.

View File

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

View File

@@ -14,12 +14,12 @@ Dockerfile to build a [LimeSurvey](https://limesurvey.org) Image for the Docker
## Supported tags and respective Dockerfile links
- [`6-apache`, `6.<BUILD-NUMBER>-apache`, `latest` ](https://github.com/martialblog/docker-limesurvey/blob/master/6.0/apache/Dockerfile)
- [`6-fpm`, `6.<BUILD-NUMBER>-fpm`](https://github.com/martialblog/docker-limesurvey/blob/master/6.0/fpm/Dockerfile)
- [`6-fpm-alpine`, `6.<BUILD-NUMBER>-fpm-alpine`](https://github.com/martialblog/docker-limesurvey/blob/master/6.0/fpm-alpine/Dockerfile)
- [`5-apache`, `5.<BUILD-NUMBER>-apache`, `latest` ](https://github.com/martialblog/docker-limesurvey/blob/master/5.0/apache/Dockerfile)
- [`5-fpm`, `5.<BUILD-NUMBER>-fpm`](https://github.com/martialblog/docker-limesurvey/blob/master/5.0/fpm/Dockerfile)
- [`5-fpm-alpine`, `5.<BUILD-NUMBER>-fpm-alpine`](https://github.com/martialblog/docker-limesurvey/blob/master/5.0/fpm-alpine/Dockerfile)
- [`3-apache`, `3.<BUILD-NUMBER>-apache`](https://github.com/martialblog/docker-limesurvey/blob/master/3.0/apache/Dockerfile)
- [`3-fpm`, `3.<BUILD-NUMBER>-fpm`](https://github.com/martialblog/docker-limesurvey/blob/master/3.0/fpm/Dockerfile)
- [`3-fpm-alpine`, `3.<BUILD-NUMBER>-fpm-alpine`](https://github.com/martialblog/docker-limesurvey/blob/master/3.0/fpm-alpine/Dockerfile)
# Using the Apache Image
@@ -129,8 +129,8 @@ If you are running LimeSurvey behind a Reverse Proxy you might need some additio
| ENCRYPT_KEYPAIR | Data encryption keypair |
| ENCRYPT_PUBLIC_KEY | Data encryption public key |
| ENCRYPT_SECRET_KEY | Data encryption secret key |
| ENCRYPT_NONCE | Data encryption nonce (used in 5.0) |
| ENCRYPT_SECRET_BOX_KEY | Data encryption secret box key (used in 5.0) |
| ENCRYPT_NONCE | Data encryption nonce (used in 5.0 and higher) |
| ENCRYPT_SECRET_BOX_KEY | Data encryption secret box key (used in 5.0 and higher) |
| LISTEN_PORT | Apache: Listen port. Default: 8080 |
For further details on the settings see: https://manual.limesurvey.org/Optional_settings#Advanced_Path_Settings
@@ -171,6 +171,12 @@ local docker-limesurvey_lime
$ docker volume rm docker-limesurvey_lime
```
## Upgrading to 6.0 from 5.x
The LimeSurvey 6 Images will use PHP 8.1 as Base Images.
LimeSurvey 5 will become the new LTS. LimeSurvey 3 is deprecated and will no longer be supported.
## Upgrading to 5.0 from 4.x
The default user in the Container will now be *www-data* (uid 33 in Debian, uid 82 in Alpine), any volumes mounted need the corresponding permissions:
@@ -195,10 +201,12 @@ If you are using the Apache2 Images, the default port will now be **8080**. Depe
## LimeSurvey behind a reverse proxy with a subdirectory
When running LimeSurvey behind a reverse proxy with a subdirectory (i.e. example.com/limesurvey), the admin area might not be displayed correctly due to a routing issue. The application will forward you to the base url regardless. See:
- https://github.com/martialblog/docker-limesurvey/issues/49
When running LimeSurvey behind a reverse proxy with a subdirectory (i.e. example.com/limesurvey), the admin area might not be displayed correctly due to a routing issue. The application will forward you to the BASE URL regardless.
This might be fixed by setting the HTTP Host Header in the reverse proxy explicitly.
See:
- https://github.com/martialblog/docker-limesurvey/issues/127
- https://github.com/martialblog/docker-limesurvey/issues/106
# References

View File

@@ -1,7 +1,7 @@
version: "3.0"
services:
limesurvey:
image: docker.io/martialblog/limesurvey:3-apache
image: docker.io/martialblog/limesurvey:latest
links:
- lime-db
depends_on:

View File

@@ -2,7 +2,7 @@ version: "3.0"
services:
limesurvey:
build:
context: 5.0/fpm/
context: 6.0/fpm/
dockerfile: Dockerfile
volumes:
# Hint: This is just an example, change /tmp to something persistent

View File

@@ -2,7 +2,7 @@ version: "3.0"
services:
limesurvey:
build:
context: 5.0/fpm-alpine/
context: 6.0/fpm-alpine/
dockerfile: Dockerfile
volumes:
# Hint: This is just an example, change /tmp to something persistent

View File

@@ -2,7 +2,7 @@ version: "3.0"
services:
limesurvey:
build:
context: 5.0/fpm/
context: 6.0/fpm/
dockerfile: Dockerfile
volumes:
# Hint: This is just an example, change /tmp to something persistent

View File

@@ -3,7 +3,7 @@ services:
limesurvey:
build:
# Hint: Change it to 3.0/apache/ if you want to use LimeSurvey 3.*
context: 5.0/apache/
context: 6.0/apache/
dockerfile: Dockerfile
volumes:
# Hint: This is just an example, change /tmp to something persistent

View File

@@ -2,7 +2,7 @@ version: "3.0"
services:
limesurvey:
build:
context: 5.0/apache/
context: 6.0/apache/
dockerfile: Dockerfile
labels:
traefik.enable: 'true'

View File

@@ -2,7 +2,7 @@ version: "3.0"
services:
limesurvey:
build:
context: 5.0/apache/
context: 6.0/apache/
dockerfile: Dockerfile
labels:
traefik.enable: 'true'

View File

@@ -2,7 +2,7 @@ version: "3.0"
services:
limesurvey:
build:
context: 5.0/apache/
context: 6.0/apache/
dockerfile: Dockerfile
volumes:
# Hint: This is just an example, change /tmp to something persistent

View File

@@ -21,9 +21,6 @@ fileExistenceTests:
path: '/var/www/html/admin/index.php'
shouldExist: true
permissions: '-rw-rw-r--'
- name: 'Ldap syslink'
path: '/usr/lib/x86_64-linux-gnu/libldap.so'
shouldExist: true
- name: "Dependencies - PHP - gd"
path: '/usr/local/etc/php/conf.d/docker-php-ext-gd.ini'
shouldExist: true

View File

@@ -34,5 +34,5 @@ sed -r -i -e "s/[0-9]+(\.[0-9]+)+\+[0-9]+/$NEW_VERSION/" "$MAJOR_VERSION/apache/
sed -r -i -e "s/[A-Fa-f0-9]{64}/$SHA256_CHECKSUM/" "$MAJOR_VERSION/apache/Dockerfile" "$MAJOR_VERSION/fpm/Dockerfile" "$MAJOR_VERSION/fpm-alpine/Dockerfile"
# After that, check and commit
echo "git add 3.0 ; git commit -m 'Upgrading to LTS Version ${NEW_VERSION}' && git tag ${NEW_TAG}"
echo "git add 5.0 ; git commit -m 'Upgrading to Version ${NEW_VERSION}' && git tag ${NEW_TAG}"
echo "git add 5.0 ; git commit -m 'Upgrading to LTS Version ${NEW_VERSION}' && git tag ${NEW_TAG}"
echo "git add 6.0 ; git commit -m 'Upgrading to Version ${NEW_VERSION}' && git tag ${NEW_TAG}"