mirror of
https://github.com/mykitserver/docker-limesurvey.git
synced 2025-12-06 16:39:11 +01:00
Compare commits
25 Commits
5.0.1+2105
...
3.27.7-210
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6ecc2e30dd | ||
|
|
e638fc36a0 | ||
|
|
bd836fd91f | ||
|
|
d95fdafbd4 | ||
|
|
962f607a11 | ||
|
|
7146b4d09e | ||
|
|
dce4f4e100 | ||
|
|
05ec82a41c | ||
|
|
e3223f7a87 | ||
|
|
f29d671591 | ||
|
|
745553a417 | ||
|
|
f313ba2581 | ||
|
|
e7a859bc1a | ||
|
|
fdce9e0f97 | ||
|
|
d0259b255b | ||
|
|
0770ca63c7 | ||
|
|
1e3009bf6c | ||
|
|
bdcab55309 | ||
|
|
2755985321 | ||
|
|
cb5b062980 | ||
|
|
3890f9f73a | ||
|
|
c181f3a832 | ||
|
|
eda09e735e | ||
|
|
80a5f95fab | ||
|
|
65c1902247 |
96
.github/workflows/build-latest-container-images.yaml
vendored
Normal file
96
.github/workflows/build-latest-container-images.yaml
vendored
Normal file
@@ -0,0 +1,96 @@
|
||||
name: Publish Latest Container Images
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- '5.*'
|
||||
|
||||
jobs:
|
||||
lint_dockerfiles:
|
||||
name: Lint Dockerfile with hadolint
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
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
|
||||
with:
|
||||
dockerfile: ${{ matrix.dockerfile }}
|
||||
ignore: DL4006 DL3008 DL3018
|
||||
|
||||
push_images_to_registries:
|
||||
name: Push Container Images to registries
|
||||
runs-on: ubuntu-latest
|
||||
needs: [lint_dockerfiles]
|
||||
environment: docker-build
|
||||
permissions:
|
||||
packages: write
|
||||
contents: read
|
||||
steps:
|
||||
- name: 'Check out the repo'
|
||||
uses: actions/checkout@v2
|
||||
- name: 'Set up Docker Buildx'
|
||||
uses: docker/setup-buildx-action@v1
|
||||
with:
|
||||
buildkitd-flags: --debug
|
||||
- name: 'Log in to DockerHub'
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: docker/login-action@v1
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_HUB_TOKEN }}
|
||||
- name: 'Apache variant metadata'
|
||||
id: metadata-apache
|
||||
uses: docker/metadata-action@v3
|
||||
with:
|
||||
images: |
|
||||
docker.io/martialblog/limesurvey
|
||||
tags: |
|
||||
type=semver,pattern={{raw}},suffix=-apache
|
||||
type=semver,pattern={{major}},suffix=-apache
|
||||
flavor: |
|
||||
latest=false
|
||||
- name: 'Build and push latest Apache container images'
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
context: 5.0/apache
|
||||
push: true
|
||||
tags: ${{ steps.metadata-apache.outputs.tags }}
|
||||
labels: ${{ steps.metadata-apache.outputs.labels }}
|
||||
|
||||
- name: 'FPM variant metadata'
|
||||
id: metadata-fpm
|
||||
uses: docker/metadata-action@v3
|
||||
with:
|
||||
images: |
|
||||
docker.io/martialblog/limesurvey
|
||||
tags: |
|
||||
type=semver,pattern={{version}},suffix=-fpm
|
||||
type=semver,pattern={{major}},suffix=-fpm
|
||||
- name: 'Build and push latest fpm container images'
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
context: 5.0/fpm
|
||||
push: true
|
||||
tags: ${{ steps.metadata-fpm.outputs.tags }}
|
||||
labels: ${{ steps.metadata-fpm.outputs.labels }}
|
||||
|
||||
- name: 'FPM Alpine variant metadata'
|
||||
id: metadata-fpm-alpine
|
||||
uses: docker/metadata-action@v3
|
||||
with:
|
||||
images: |
|
||||
docker.io/martialblog/limesurvey
|
||||
tags: |
|
||||
type=semver,pattern={{version}},suffix=-fpm-alpine
|
||||
type=semver,pattern={{major}},suffix=-fpm-alpine
|
||||
- name: 'Build and push latest fpm-alpine container images'
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
context: 5.0/fpm-alpine
|
||||
push: true
|
||||
tags: ${{ steps.metadata-fpm-alpine.outputs.tags }}
|
||||
labels: ${{ steps.metadata-fpm-alpine.outputs.labels }}
|
||||
96
.github/workflows/build-lts-container-images.yaml
vendored
Normal file
96
.github/workflows/build-lts-container-images.yaml
vendored
Normal file
@@ -0,0 +1,96 @@
|
||||
name: Publish LTS Container Images
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- '3.*'
|
||||
|
||||
jobs:
|
||||
lint_dockerfiles:
|
||||
name: 'Lint Dockerfile with hadolint'
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
dockerfile:
|
||||
- 3.0/apache/Dockerfile
|
||||
- 3.0/fpm-alpine/Dockerfile
|
||||
- 3.0/fpm/Dockerfile
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: hadolint/hadolint-action@v1.5.0
|
||||
with:
|
||||
dockerfile: ${{ matrix.dockerfile }}
|
||||
ignore: DL4006 DL3008 DL3018
|
||||
|
||||
push_images_to_registries:
|
||||
name: 'Push container images to registries'
|
||||
runs-on: ubuntu-latest
|
||||
needs: [lint_dockerfiles]
|
||||
environment: docker-build
|
||||
permissions:
|
||||
packages: write
|
||||
contents: read
|
||||
steps:
|
||||
- name: 'Check out the repo'
|
||||
uses: actions/checkout@v2
|
||||
- name: 'Set up Docker Buildx'
|
||||
uses: docker/setup-buildx-action@v1
|
||||
with:
|
||||
buildkitd-flags: --debug
|
||||
- name: 'Log in to DockerHub'
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: docker/login-action@v1
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_HUB_TOKEN }}
|
||||
- name: 'Apache variant metadata'
|
||||
id: metadata-apache
|
||||
uses: docker/metadata-action@v3
|
||||
with:
|
||||
images: |
|
||||
docker.io/martialblog/limesurvey
|
||||
tags: |
|
||||
type=semver,pattern={{raw}},suffix=-apache
|
||||
type=semver,pattern={{major}},suffix=-apache
|
||||
flavor: |
|
||||
latest=false
|
||||
- name: 'Build and push LTS apache container images'
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
context: 3.0/apache
|
||||
push: true
|
||||
tags: ${{ steps.metadata-apache.outputs.tags }}
|
||||
labels: ${{ steps.metadata-apache.outputs.labels }}
|
||||
|
||||
- name: 'FPM variant metadata'
|
||||
id: metadata-fpm
|
||||
uses: docker/metadata-action@v3
|
||||
with:
|
||||
images: |
|
||||
docker.io/martialblog/limesurvey
|
||||
tags: |
|
||||
type=semver,pattern={{version}},suffix=-fpm
|
||||
type=semver,pattern={{major}},suffix=-fpm
|
||||
- name: 'Build and push LTS fpm container images'
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
context: 3.0/fpm
|
||||
push: true
|
||||
tags: ${{ steps.metadata-fpm.outputs.tags }}
|
||||
labels: ${{ steps.metadata-apache.outputs.labels }}
|
||||
|
||||
- name: 'FPM Alpine variant metadata'
|
||||
id: metadata-fpm-alpine
|
||||
uses: docker/metadata-action@v3
|
||||
with:
|
||||
images: |
|
||||
docker.io/martialblog/limesurvey
|
||||
tags: |
|
||||
type=semver,pattern={{version}},suffix=-fpm-alpine
|
||||
type=semver,pattern={{major}},suffix=-fpm-alpine
|
||||
- name: 'Build and push LTS fpm-alpine container images'
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
context: 3.0/fpm-alpine
|
||||
push: true
|
||||
tags: ${{ steps.metadata-fpm-alpine.outputs.tags }}
|
||||
labels: ${{ steps.metadata-apache.outputs.labels }}
|
||||
24
.github/workflows/lint-dockerfiles.yaml
vendored
Normal file
24
.github/workflows/lint-dockerfiles.yaml
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
---
|
||||
name: Lint Dockerfile
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
name: Lint Dockerfile with hadolint
|
||||
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
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: hadolint/hadolint-action@v1.5.0
|
||||
with:
|
||||
dockerfile: ${{ matrix.dockerfile }}
|
||||
ignore: DL4006 DL3008 DL3018
|
||||
50
.github/workflows/test-latest-container-images.yaml
vendored
Normal file
50
.github/workflows/test-latest-container-images.yaml
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
name: Test Latest Container Images
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
test_images:
|
||||
name: Test Latest Container Images with Trivy
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
context:
|
||||
- apache
|
||||
- fpm-alpine
|
||||
- fpm
|
||||
steps:
|
||||
- name: 'Check out the repo'
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: 'Set up Docker Buildx'
|
||||
uses: docker/setup-buildx-action@v1
|
||||
|
||||
- name: 'Build Container images'
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
context: 5.0/${{ matrix.context }}
|
||||
push: false
|
||||
load: true
|
||||
tags: docker.io/martialblog/limesurvey:5-${{ matrix.context }}
|
||||
|
||||
- name: 'Run Structure tests'
|
||||
uses: plexsystems/container-structure-test-action@v0.2.0
|
||||
with:
|
||||
image: docker.io/martialblog/limesurvey:5-${{ matrix.context }}
|
||||
config: tests/${{ matrix.context }}-tests.yaml
|
||||
|
||||
- name: 'Run vulnerability scanner'
|
||||
uses: aquasecurity/trivy-action@master
|
||||
with:
|
||||
image-ref: docker.io/martialblog/limesurvey:5-${{ matrix.context }}
|
||||
format: 'template'
|
||||
template: '@/contrib/sarif.tpl'
|
||||
exit-code: '0'
|
||||
output: trivy-results-5-${{ matrix.context }}.sarif
|
||||
severity: 'CRITICAL,HIGH'
|
||||
|
||||
- name: 'Upload Trivy scan results to GitHub'
|
||||
uses: github/codeql-action/upload-sarif@v1
|
||||
with:
|
||||
sarif_file: trivy-results-5-${{ matrix.context }}.sarif
|
||||
category: "${{ matrix.context }}"
|
||||
50
.github/workflows/test-lts-container-images.yaml
vendored
Normal file
50
.github/workflows/test-lts-container-images.yaml
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
name: Test LTS Container Images
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
test_images:
|
||||
name: Test LTS Container Images with Trivy
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
context:
|
||||
- apache
|
||||
- fpm-alpine
|
||||
- fpm
|
||||
steps:
|
||||
- name: 'Check out the repo'
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: 'Set up Docker Buildx'
|
||||
uses: docker/setup-buildx-action@v1
|
||||
|
||||
- name: 'Build Container images'
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
context: 3.0/${{ matrix.context }}
|
||||
push: false
|
||||
load: true
|
||||
tags: docker.io/martialblog/limesurvey:3-${{ matrix.context }}
|
||||
|
||||
- name: 'Run Structure tests'
|
||||
uses: plexsystems/container-structure-test-action@v0.2.0
|
||||
with:
|
||||
image: docker.io/martialblog/limesurvey:3-${{ matrix.context }}
|
||||
config: tests/${{ matrix.context }}-tests.yaml
|
||||
|
||||
- name: 'Run vulnerability scanner'
|
||||
uses: aquasecurity/trivy-action@master
|
||||
with:
|
||||
image-ref: docker.io/martialblog/limesurvey:3-${{ matrix.context }}
|
||||
format: 'template'
|
||||
template: '@/contrib/sarif.tpl'
|
||||
exit-code: '0'
|
||||
output: trivy-results-3-${{ matrix.context }}.sarif
|
||||
severity: 'CRITICAL,HIGH'
|
||||
|
||||
- name: 'Upload Trivy scan results to GitHub'
|
||||
uses: github/codeql-action/upload-sarif@v1
|
||||
with:
|
||||
sarif_file: trivy-results-3-${{ matrix.context }}.sarif
|
||||
category: "${{ matrix.context }}"
|
||||
18
.travis.yml
18
.travis.yml
@@ -1,18 +0,0 @@
|
||||
sudo: required
|
||||
language: bash
|
||||
services:
|
||||
- docker
|
||||
install:
|
||||
jobs:
|
||||
include:
|
||||
- env: HADOLINT="${HOME}/hadolint"
|
||||
script:
|
||||
- curl -sL -o ${HADOLINT} "https://github.com/hadolint/hadolint/releases/download/v1.23.0/hadolint-$(uname -s)-$(uname -m)"
|
||||
- chmod 700 ${HADOLINT}
|
||||
- git ls-files --exclude='Dockerfile*' --ignored | xargs --max-lines=1 ${HADOLINT} --ignore DL4006 --ignore DL3008 --ignore DL3018
|
||||
- env: TAG=martialblog/limesurvey-apache
|
||||
script: cd 5.0/apache; docker build -q -t $TAG . && cd ../..; ./tests/run.sh $TAG
|
||||
- env: TAG=martialblog/limesurvey-fpm
|
||||
script: cd 5.0/fpm; docker build -q -t $TAG . && cd ../..; ./tests/run.sh $TAG
|
||||
- env: TAG=martialblog/limesurvey-alpine
|
||||
script: cd 5.0/fpm; docker build -q -t $TAG . && cd ../..; ./tests/run.sh $TAG
|
||||
@@ -1,7 +1,7 @@
|
||||
FROM php:7.4-apache
|
||||
LABEL maintainer="markus@martialblog.de"
|
||||
ARG version='3.27.1+210531'
|
||||
ARG sha256_checksum='229019839642239d14b11b443bafee59e1fadf0c5e7718f101b8fb789de81e4a'
|
||||
ARG version='3.27.7+210713'
|
||||
ARG sha256_checksum='cd88e6d0cbd4652b6814dd48b8ed493817666ecbf81b80806ee740fdc02dca28'
|
||||
ARG USER=root
|
||||
ARG LISTEN_PORT=80
|
||||
|
||||
@@ -76,6 +76,7 @@ RUN set -ex; \
|
||||
|
||||
WORKDIR /var/www/html
|
||||
COPY entrypoint.sh entrypoint.sh
|
||||
COPY vhosts-access-log.conf /etc/apache2/conf-enabled/other-vhosts-access-log.conf
|
||||
USER $USER
|
||||
ENTRYPOINT ["/var/www/html/entrypoint.sh"]
|
||||
CMD ["apache2-foreground"]
|
||||
|
||||
@@ -19,6 +19,8 @@ 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}
|
||||
@@ -37,12 +39,12 @@ fi
|
||||
|
||||
if [ "$LISTEN_PORT" != "80" ]; then
|
||||
echo "Info: Customizing Apache Listen port to $LISTEN_PORT"
|
||||
sed -i "s/80/$LISTEN_PORT/" /etc/apache2/ports.conf /etc/apache2/sites-available/000-default.conf
|
||||
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
|
||||
until nc -z -v -w30 "$DB_HOST" "$DB_PORT"
|
||||
do
|
||||
echo "Info: Waiting for database connection..."
|
||||
sleep 5
|
||||
@@ -65,7 +67,7 @@ else
|
||||
DB_CHARSET=${DB_CHARSET:-'utf8'}
|
||||
fi
|
||||
|
||||
if [ ! -z "$DB_SOCK" ]; then
|
||||
if [ -n "$DB_SOCK" ]; then
|
||||
echo 'Info: Using unix socket'
|
||||
DB_CONNECT='unix_socket'
|
||||
else
|
||||
@@ -89,10 +91,15 @@ return array(
|
||||
'charset' => '$DB_CHARSET',
|
||||
'tablePrefix' => '$DB_TABLE_PREFIX',
|
||||
),
|
||||
//'session' => array (
|
||||
// 'class' => 'application.core.web.DbHttpSession',
|
||||
// 'connectionID' => 'db',
|
||||
// 'sessionTableName' => '{{sessions}}',
|
||||
//),
|
||||
'urlManager' => array(
|
||||
'urlFormat' => '$URL_FORMAT',
|
||||
'rules' => array(),
|
||||
'showScriptName' => true,
|
||||
'showScriptName' => $SHOW_SCRIPT_NAME,
|
||||
),
|
||||
'request' => array(
|
||||
'baseUrl' => '$BASE_URL',
|
||||
@@ -109,17 +116,25 @@ 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 LimeSurvey database is provisioned
|
||||
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
|
||||
php application/commands/console.php updatedb
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
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
|
||||
php application/commands/console.php install "$ADMIN_USER" "$ADMIN_PASSWORD" "$ADMIN_NAME" "$ADMIN_EMAIL"
|
||||
fi
|
||||
|
||||
exec "$@"
|
||||
|
||||
3
3.0/apache/vhosts-access-log.conf
Normal file
3
3.0/apache/vhosts-access-log.conf
Normal 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
|
||||
@@ -1,7 +1,7 @@
|
||||
FROM php:7.4-fpm-alpine
|
||||
LABEL maintainer="markus@martialblog.de"
|
||||
ARG version='3.27.1+210531'
|
||||
ARG sha256_checksum='229019839642239d14b11b443bafee59e1fadf0c5e7718f101b8fb789de81e4a'
|
||||
ARG version='3.27.7+210713'
|
||||
ARG sha256_checksum='cd88e6d0cbd4652b6814dd48b8ed493817666ecbf81b80806ee740fdc02dca28'
|
||||
|
||||
# Install OS dependencies
|
||||
RUN set -ex; \
|
||||
|
||||
@@ -19,6 +19,8 @@ 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}
|
||||
@@ -35,7 +37,7 @@ fi
|
||||
|
||||
# Check if database is available
|
||||
if [ -z "$DB_SOCK" ]; then
|
||||
until nc -z -v -w30 $DB_HOST $DB_PORT
|
||||
until nc -z -v -w30 "$DB_HOST" "$DB_PORT"
|
||||
do
|
||||
echo "Info: Waiting for database connection..."
|
||||
sleep 5
|
||||
@@ -58,7 +60,7 @@ else
|
||||
DB_CHARSET=${DB_CHARSET:-'utf8'}
|
||||
fi
|
||||
|
||||
if [ ! -z "$DB_SOCK" ]; then
|
||||
if [ -n "$DB_SOCK" ]; then
|
||||
echo 'Info: Using unix socket'
|
||||
DB_CONNECT='unix_socket'
|
||||
else
|
||||
@@ -82,10 +84,15 @@ return array(
|
||||
'charset' => '$DB_CHARSET',
|
||||
'tablePrefix' => '$DB_TABLE_PREFIX',
|
||||
),
|
||||
//'session' => array (
|
||||
// 'class' => 'application.core.web.DbHttpSession',
|
||||
// 'connectionID' => 'db',
|
||||
// 'sessionTableName' => '{{sessions}}',
|
||||
//),
|
||||
'urlManager' => array(
|
||||
'urlFormat' => '$URL_FORMAT',
|
||||
'rules' => array(),
|
||||
'showScriptName' => true,
|
||||
'showScriptName' => $SHOW_SCRIPT_NAME,
|
||||
),
|
||||
'request' => array(
|
||||
'baseUrl' => '$BASE_URL',
|
||||
@@ -102,17 +109,25 @@ 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 LimeSurvey database is provisioned
|
||||
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
|
||||
php application/commands/console.php updatedb
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
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
|
||||
php application/commands/console.php install "$ADMIN_USER" "$ADMIN_PASSWORD" "$ADMIN_NAME" "$ADMIN_EMAIL"
|
||||
fi
|
||||
|
||||
exec "$@"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
FROM php:7.4-fpm
|
||||
LABEL maintainer="markus@martialblog.de"
|
||||
ARG version='3.27.1+210531'
|
||||
ARG sha256_checksum='229019839642239d14b11b443bafee59e1fadf0c5e7718f101b8fb789de81e4a'
|
||||
ARG version='3.27.7+210713'
|
||||
ARG sha256_checksum='cd88e6d0cbd4652b6814dd48b8ed493817666ecbf81b80806ee740fdc02dca28'
|
||||
|
||||
# Install OS dependencies
|
||||
RUN set -ex; \
|
||||
|
||||
@@ -19,6 +19,8 @@ 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}
|
||||
@@ -35,7 +37,7 @@ fi
|
||||
|
||||
# Check if database is available
|
||||
if [ -z "$DB_SOCK" ]; then
|
||||
until nc -z -v -w30 $DB_HOST $DB_PORT
|
||||
until nc -z -v -w30 "$DB_HOST" "$DB_PORT"
|
||||
do
|
||||
echo "Info: Waiting for database connection..."
|
||||
sleep 5
|
||||
@@ -58,7 +60,7 @@ else
|
||||
DB_CHARSET=${DB_CHARSET:-'utf8'}
|
||||
fi
|
||||
|
||||
if [ ! -z "$DB_SOCK" ]; then
|
||||
if [ -n "$DB_SOCK" ]; then
|
||||
echo 'Info: Using unix socket'
|
||||
DB_CONNECT='unix_socket'
|
||||
else
|
||||
@@ -82,10 +84,15 @@ return array(
|
||||
'charset' => '$DB_CHARSET',
|
||||
'tablePrefix' => '$DB_TABLE_PREFIX',
|
||||
),
|
||||
//'session' => array (
|
||||
// 'class' => 'application.core.web.DbHttpSession',
|
||||
// 'connectionID' => 'db',
|
||||
// 'sessionTableName' => '{{sessions}}',
|
||||
//),
|
||||
'urlManager' => array(
|
||||
'urlFormat' => '$URL_FORMAT',
|
||||
'rules' => array(),
|
||||
'showScriptName' => true,
|
||||
'showScriptName' => $SHOW_SCRIPT_NAME,
|
||||
),
|
||||
'request' => array(
|
||||
'baseUrl' => '$BASE_URL',
|
||||
@@ -102,17 +109,25 @@ 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 LimeSurvey database is provisioned
|
||||
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
|
||||
php application/commands/console.php updatedb
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
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
|
||||
php application/commands/console.php install "$ADMIN_USER" "$ADMIN_PASSWORD" "$ADMIN_NAME" "$ADMIN_EMAIL"
|
||||
fi
|
||||
|
||||
exec "$@"
|
||||
|
||||
@@ -41,12 +41,12 @@ fi
|
||||
|
||||
if [ "$LISTEN_PORT" != "80" ]; then
|
||||
echo "Info: Customizing Apache Listen port to $LISTEN_PORT"
|
||||
sed -i "s/80/$LISTEN_PORT/" /etc/apache2/ports.conf /etc/apache2/sites-available/000-default.conf
|
||||
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
|
||||
until nc -z -v -w30 "$DB_HOST" "$DB_PORT"
|
||||
do
|
||||
echo "Info: Waiting for database connection..."
|
||||
sleep 5
|
||||
@@ -69,7 +69,7 @@ else
|
||||
DB_CHARSET=${DB_CHARSET:-'utf8'}
|
||||
fi
|
||||
|
||||
if [ ! -z "$DB_SOCK" ]; then
|
||||
if [ -n "$DB_SOCK" ]; then
|
||||
echo 'Info: Using unix socket'
|
||||
DB_CONNECT='unix_socket'
|
||||
else
|
||||
@@ -118,7 +118,7 @@ if [ -f application/config/security.php ]; then
|
||||
echo 'Info: security.php already provisioned'
|
||||
else
|
||||
echo 'Info: Creating security.php'
|
||||
if [ ! -z "$ENCRYPT_KEYPAIR" ]; then
|
||||
if [ -n "$ENCRYPT_KEYPAIR" ]; then
|
||||
|
||||
cat <<EOF > application/config/security.php
|
||||
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
|
||||
@@ -139,12 +139,14 @@ fi
|
||||
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
|
||||
php application/commands/console.php updatedb
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
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
|
||||
php application/commands/console.php install "$ADMIN_USER" "$ADMIN_PASSWORD" "$ADMIN_NAME" "$ADMIN_EMAIL"
|
||||
fi
|
||||
|
||||
exec "$@"
|
||||
|
||||
@@ -39,7 +39,7 @@ fi
|
||||
|
||||
# Check if database is available
|
||||
if [ -z "$DB_SOCK" ]; then
|
||||
until nc -z -v -w30 $DB_HOST $DB_PORT
|
||||
until nc -z -v -w30 "$DB_HOST" "$DB_PORT"
|
||||
do
|
||||
echo "Info: Waiting for database connection..."
|
||||
sleep 5
|
||||
@@ -62,7 +62,7 @@ else
|
||||
DB_CHARSET=${DB_CHARSET:-'utf8'}
|
||||
fi
|
||||
|
||||
if [ ! -z "$DB_SOCK" ]; then
|
||||
if [ -n "$DB_SOCK" ]; then
|
||||
echo 'Info: Using unix socket'
|
||||
DB_CONNECT='unix_socket'
|
||||
else
|
||||
@@ -111,7 +111,7 @@ if [ -f application/config/security.php ]; then
|
||||
echo 'Info: security.php already provisioned'
|
||||
else
|
||||
echo 'Info: Creating security.php'
|
||||
if [ ! -z "$ENCRYPT_KEYPAIR" ]; then
|
||||
if [ -n "$ENCRYPT_KEYPAIR" ]; then
|
||||
|
||||
cat <<EOF > application/config/security.php
|
||||
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
|
||||
@@ -132,12 +132,14 @@ fi
|
||||
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
|
||||
php application/commands/console.php updatedb
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
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
|
||||
php application/commands/console.php install "$ADMIN_USER" "$ADMIN_PASSWORD" "$ADMIN_NAME" "$ADMIN_EMAIL"
|
||||
fi
|
||||
|
||||
exec "$@"
|
||||
|
||||
@@ -39,7 +39,7 @@ fi
|
||||
|
||||
# Check if database is available
|
||||
if [ -z "$DB_SOCK" ]; then
|
||||
until nc -z -v -w30 $DB_HOST $DB_PORT
|
||||
until nc -z -v -w30 "$DB_HOST" "$DB_PORT"
|
||||
do
|
||||
echo "Info: Waiting for database connection..."
|
||||
sleep 5
|
||||
@@ -62,7 +62,7 @@ else
|
||||
DB_CHARSET=${DB_CHARSET:-'utf8'}
|
||||
fi
|
||||
|
||||
if [ ! -z "$DB_SOCK" ]; then
|
||||
if [ -n "$DB_SOCK" ]; then
|
||||
echo 'Info: Using unix socket'
|
||||
DB_CONNECT='unix_socket'
|
||||
else
|
||||
@@ -111,7 +111,7 @@ if [ -f application/config/security.php ]; then
|
||||
echo 'Info: security.php already provisioned'
|
||||
else
|
||||
echo 'Info: Creating security.php'
|
||||
if [ ! -z "$ENCRYPT_KEYPAIR" ]; then
|
||||
if [ -n "$ENCRYPT_KEYPAIR" ]; then
|
||||
|
||||
cat <<EOF > application/config/security.php
|
||||
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
|
||||
@@ -132,12 +132,14 @@ fi
|
||||
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
|
||||
php application/commands/console.php updatedb
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
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
|
||||
php application/commands/console.php install "$ADMIN_USER" "$ADMIN_PASSWORD" "$ADMIN_NAME" "$ADMIN_EMAIL"
|
||||
fi
|
||||
|
||||
exec "$@"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
FROM php:8-apache
|
||||
LABEL maintainer="markus@martialblog.de"
|
||||
ARG version='5.0.1+210532'
|
||||
ARG sha256_checksum='4ece0065b246b2509094d20a4e430de41eb99a826ac79783974abe6f7ef39ad0'
|
||||
ARG version='5.0.7+210628'
|
||||
ARG sha256_checksum='efde82aabe036263e2ab938315ede8b697f1aafeffedd1d48dc492af9bbddf42'
|
||||
ARG USER=www-data
|
||||
ARG LISTEN_PORT=8080
|
||||
|
||||
@@ -79,6 +79,7 @@ EXPOSE $LISTEN_PORT
|
||||
|
||||
WORKDIR /var/www/html
|
||||
COPY entrypoint.sh entrypoint.sh
|
||||
COPY vhosts-access-log.conf /etc/apache2/conf-enabled/other-vhosts-access-log.conf
|
||||
USER $USER
|
||||
ENTRYPOINT ["/var/www/html/entrypoint.sh"]
|
||||
CMD ["apache2-foreground"]
|
||||
|
||||
@@ -24,6 +24,7 @@ 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}
|
||||
@@ -42,12 +43,12 @@ fi
|
||||
|
||||
if [ "$LISTEN_PORT" != "80" ]; then
|
||||
echo "Info: Customizing Apache Listen port to $LISTEN_PORT"
|
||||
sed -i "s/80/$LISTEN_PORT/" /etc/apache2/ports.conf /etc/apache2/sites-available/000-default.conf
|
||||
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
|
||||
until nc -z -v -w30 "$DB_HOST" "$DB_PORT"
|
||||
do
|
||||
echo "Info: Waiting for database connection..."
|
||||
sleep 5
|
||||
@@ -70,7 +71,7 @@ else
|
||||
DB_CHARSET=${DB_CHARSET:-'utf8'}
|
||||
fi
|
||||
|
||||
if [ ! -z "$DB_SOCK" ]; then
|
||||
if [ -n "$DB_SOCK" ]; then
|
||||
echo 'Info: Using unix socket'
|
||||
DB_CONNECT='unix_socket'
|
||||
else
|
||||
@@ -94,6 +95,11 @@ return array(
|
||||
'charset' => '$DB_CHARSET',
|
||||
'tablePrefix' => '$DB_TABLE_PREFIX',
|
||||
),
|
||||
//'session' => array (
|
||||
// 'class' => 'application.core.web.DbHttpSession',
|
||||
// 'connectionID' => 'db',
|
||||
// 'sessionTableName' => '{{sessions}}',
|
||||
//),
|
||||
'urlManager' => array(
|
||||
'urlFormat' => '$URL_FORMAT',
|
||||
'rules' => array(),
|
||||
@@ -114,12 +120,19 @@ 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 [ ! -z "$ENCRYPT_KEYPAIR" ]; then
|
||||
if [ -n "$ENCRYPT_KEYPAIR" ]; then
|
||||
|
||||
cat <<EOF > application/config/security.php
|
||||
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
|
||||
@@ -140,12 +153,14 @@ fi
|
||||
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
|
||||
php application/commands/console.php updatedb
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
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
|
||||
php application/commands/console.php install "$ADMIN_USER" "$ADMIN_PASSWORD" "$ADMIN_NAME" "$ADMIN_EMAIL"
|
||||
fi
|
||||
|
||||
exec "$@"
|
||||
|
||||
3
5.0/apache/vhosts-access-log.conf
Normal file
3
5.0/apache/vhosts-access-log.conf
Normal 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
|
||||
@@ -1,7 +1,7 @@
|
||||
FROM php:8-fpm-alpine
|
||||
LABEL maintainer="markus@martialblog.de"
|
||||
ARG version='5.0.1+210532'
|
||||
ARG sha256_checksum='4ece0065b246b2509094d20a4e430de41eb99a826ac79783974abe6f7ef39ad0'
|
||||
ARG version='5.0.7+210628'
|
||||
ARG sha256_checksum='efde82aabe036263e2ab938315ede8b697f1aafeffedd1d48dc492af9bbddf42'
|
||||
ARG USER=www-data
|
||||
|
||||
# Install OS dependencies
|
||||
|
||||
@@ -24,6 +24,7 @@ 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}
|
||||
@@ -40,7 +41,7 @@ fi
|
||||
|
||||
# Check if database is available
|
||||
if [ -z "$DB_SOCK" ]; then
|
||||
until nc -z -v -w30 $DB_HOST $DB_PORT
|
||||
until nc -z -v -w30 "$DB_HOST" "$DB_PORT"
|
||||
do
|
||||
echo "Info: Waiting for database connection..."
|
||||
sleep 5
|
||||
@@ -63,7 +64,7 @@ else
|
||||
DB_CHARSET=${DB_CHARSET:-'utf8'}
|
||||
fi
|
||||
|
||||
if [ ! -z "$DB_SOCK" ]; then
|
||||
if [ -n "$DB_SOCK" ]; then
|
||||
echo 'Info: Using unix socket'
|
||||
DB_CONNECT='unix_socket'
|
||||
else
|
||||
@@ -87,6 +88,11 @@ return array(
|
||||
'charset' => '$DB_CHARSET',
|
||||
'tablePrefix' => '$DB_TABLE_PREFIX',
|
||||
),
|
||||
//'session' => array (
|
||||
// 'class' => 'application.core.web.DbHttpSession',
|
||||
// 'connectionID' => 'db',
|
||||
// 'sessionTableName' => '{{sessions}}',
|
||||
//),
|
||||
'urlManager' => array(
|
||||
'urlFormat' => '$URL_FORMAT',
|
||||
'rules' => array(),
|
||||
@@ -107,12 +113,19 @@ 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 [ ! -z "$ENCRYPT_KEYPAIR" ]; then
|
||||
if [ -n "$ENCRYPT_KEYPAIR" ]; then
|
||||
|
||||
cat <<EOF > application/config/security.php
|
||||
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
|
||||
@@ -133,12 +146,14 @@ fi
|
||||
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
|
||||
php application/commands/console.php updatedb
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
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
|
||||
php application/commands/console.php install "$ADMIN_USER" "$ADMIN_PASSWORD" "$ADMIN_NAME" "$ADMIN_EMAIL"
|
||||
fi
|
||||
|
||||
exec "$@"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
FROM php:8-fpm
|
||||
LABEL maintainer="markus@martialblog.de"
|
||||
ARG version='5.0.1+210532'
|
||||
ARG sha256_checksum='4ece0065b246b2509094d20a4e430de41eb99a826ac79783974abe6f7ef39ad0'
|
||||
ARG version='5.0.7+210628'
|
||||
ARG sha256_checksum='efde82aabe036263e2ab938315ede8b697f1aafeffedd1d48dc492af9bbddf42'
|
||||
ARG USER=www-data
|
||||
|
||||
# Install OS dependencies
|
||||
|
||||
@@ -24,6 +24,7 @@ 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}
|
||||
@@ -40,7 +41,7 @@ fi
|
||||
|
||||
# Check if database is available
|
||||
if [ -z "$DB_SOCK" ]; then
|
||||
until nc -z -v -w30 $DB_HOST $DB_PORT
|
||||
until nc -z -v -w30 "$DB_HOST" "$DB_PORT"
|
||||
do
|
||||
echo "Info: Waiting for database connection..."
|
||||
sleep 5
|
||||
@@ -63,7 +64,7 @@ else
|
||||
DB_CHARSET=${DB_CHARSET:-'utf8'}
|
||||
fi
|
||||
|
||||
if [ ! -z "$DB_SOCK" ]; then
|
||||
if [ -n "$DB_SOCK" ]; then
|
||||
echo 'Info: Using unix socket'
|
||||
DB_CONNECT='unix_socket'
|
||||
else
|
||||
@@ -87,6 +88,11 @@ return array(
|
||||
'charset' => '$DB_CHARSET',
|
||||
'tablePrefix' => '$DB_TABLE_PREFIX',
|
||||
),
|
||||
//'session' => array (
|
||||
// 'class' => 'application.core.web.DbHttpSession',
|
||||
// 'connectionID' => 'db',
|
||||
// 'sessionTableName' => '{{sessions}}',
|
||||
//),
|
||||
'urlManager' => array(
|
||||
'urlFormat' => '$URL_FORMAT',
|
||||
'rules' => array(),
|
||||
@@ -107,12 +113,19 @@ 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 [ ! -z "$ENCRYPT_KEYPAIR" ]; then
|
||||
if [ -n "$ENCRYPT_KEYPAIR" ]; then
|
||||
|
||||
cat <<EOF > application/config/security.php
|
||||
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
|
||||
@@ -133,12 +146,14 @@ fi
|
||||
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
|
||||
php application/commands/console.php updatedb
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
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
|
||||
php application/commands/console.php install "$ADMIN_USER" "$ADMIN_PASSWORD" "$ADMIN_NAME $ADMIN_EMAIL"
|
||||
fi
|
||||
|
||||
exec "$@"
|
||||
|
||||
@@ -24,15 +24,29 @@ It is best to use the upgrade shell script:
|
||||
# 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 tag 4.3.13-200824
|
||||
```
|
||||
|
||||
## Testing
|
||||
|
||||
In order to make sure the image works as promised, some tests are provided:
|
||||
|
||||
```bash
|
||||
./tests/run.sh
|
||||
```
|
||||
In order to make sure the image works as promised, some container-structure-tests are provided. The tests require the `container-structure-test` tool to be installed.
|
||||
|
||||
For further information: https://github.com/GoogleContainerTools/container-structure-test
|
||||
|
||||
```bash
|
||||
make apache-latest
|
||||
|
||||
container-structure-test test --image docker.io/martialblog/limesurvey:5-apache --config tests/apache-tests.yaml
|
||||
```
|
||||
|
||||
```bash
|
||||
make fpm-latest
|
||||
|
||||
container-structure-test test --image docker.io/martialblog/limesurvey:5-fpm-alpine --config tests/fpm-alpine-tests.yaml
|
||||
```
|
||||
|
||||
```bash
|
||||
make fpm-alpine-latest
|
||||
|
||||
container-structure-test test --image docker.io/martialblog/limesurvey:5-fpm --config tests/fpm-tests.yaml
|
||||
```
|
||||
|
||||
12
Makefile
12
Makefile
@@ -1,14 +1,14 @@
|
||||
# .PHONY: apache fpm fpm-alpine
|
||||
|
||||
apache-lts:
|
||||
docker build --pull -t martialblog/limesurvey:3-apache 3.0/apache
|
||||
docker build --pull -t docker.io/martialblog/limesurvey:3-apache 3.0/apache
|
||||
apache-latest:
|
||||
docker build --pull -t martialblog/limesurvey:5-apache 5.0/apache
|
||||
docker build --pull -t docker.io/martialblog/limesurvey:5-apache 5.0/apache
|
||||
fpm-alpine-lts:
|
||||
docker build --pull -t martialblog/limesurvey:3-fpm-alpine 3.0/fpm-alpine
|
||||
docker build --pull -t docker.io/martialblog/limesurvey:3-fpm-alpine 3.0/fpm-alpine
|
||||
fpm-alpine-latest:
|
||||
docker build --pull -t martialblog/limesurvey:5-fpm-alpine 5.0/fpm-alpine
|
||||
docker build --pull -t docker.io/martialblog/limesurvey:5-fpm-alpine 5.0/fpm-alpine
|
||||
fpm-lts:
|
||||
docker build --pull -t martialblog/limesurvey:3-fpm 3.0/fpm
|
||||
docker build --pull -t docker.io/martialblog/limesurvey:3-fpm 3.0/fpm
|
||||
fpm-latest:
|
||||
docker build --pull -t martialblog/limesurvey:5-fpm 5.0/fpm
|
||||
docker build --pull -t docker.io/martialblog/limesurvey:5-fpm 5.0/fpm
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
[](https://travis-ci.com/martialblog/docker-limesurvey)
|
||||
[](https://github.com/martialblog/docker-limesurvey/actions/workflows/lint-dockerfiles.yaml)
|
||||
[](https://github.com/martialblog/docker-limesurvey/actions/workflows/test-lts-container-images.yaml)
|
||||
[](https://github.com/martialblog/docker-limesurvey/actions/workflows/test-latest-container-images.yaml)
|
||||
[](https://microbadger.com/images/martialblog/limesurvey "Get your own image badge on microbadger.com")
|
||||
|
||||
# LimeSurvey Docker
|
||||
@@ -111,6 +113,7 @@ For further details on the settings see: https://manual.limesurvey.org/Data_encr
|
||||
| PUBLIC_URL | Public URL for public scripts |
|
||||
| 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 |
|
||||
| DEBUG | Debug level (0, 1, 2). Default: 0 |
|
||||
| DEBUG_SQL | SQL Debug level (0, 1, 2). Default 0 |
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
#!/bin/sh
|
||||
|
||||
cert_path=/etc/letsencrypt/live/$(echo $HOSTNAMES | awk '{print $1}')
|
||||
cert_path=/etc/letsencrypt/live/$(echo "$HOSTNAMES" | awk '{print $1}')
|
||||
mkdir -p cert_path
|
||||
|
||||
# if there is no certificate yet, get one
|
||||
email="--email $CERT_EMAIL"
|
||||
if [ -z $CERT_EMAIL ]
|
||||
if [ -z "$CERT_EMAIL" ]
|
||||
then
|
||||
email='--register-unsafely-without-email'
|
||||
fi
|
||||
if [ ! -e $cert_path/privkey.pem ]
|
||||
if [ ! -e "$cert_path/privkey.pem" ]
|
||||
then
|
||||
names=""
|
||||
for h in $HOSTNAMES
|
||||
do
|
||||
names=$(echo "$names -d $h")
|
||||
names="$names -d $h"
|
||||
done
|
||||
echo "Getting new certificate..."
|
||||
/usr/bin/curl -s https://raw.githubusercontent.com/certbot/certbot/master/certbot-nginx/certbot_nginx/_internal/tls_configs/options-ssl-nginx.conf > /etc/letsencrypt/options-ssl-nginx.conf
|
||||
/usr/bin/curl -s https://raw.githubusercontent.com/certbot/certbot/master/certbot/certbot/ssl-dhparams.pem > /etc/letsencrypt/ssl-dhparams.pem
|
||||
/usr/bin/certbot certonly --standalone $names --agree-tos $email
|
||||
/usr/bin/certbot certonly --standalone "$names" --agree-tos "$email"
|
||||
fi
|
||||
|
||||
nginx -g "daemon off;"
|
||||
nginx -g "daemon off;"
|
||||
|
||||
57
tests/fpm-alpine-tests.yaml
Normal file
57
tests/fpm-alpine-tests.yaml
Normal file
@@ -0,0 +1,57 @@
|
||||
schemaVersion: "2.0.0"
|
||||
|
||||
globalEnvVars:
|
||||
- key: "PATH"
|
||||
value: "/env/bin:$PATH"
|
||||
|
||||
fileContentTests:
|
||||
- name: 'Limesurvey admin file content'
|
||||
path: '/var/www/html/admin/index.php'
|
||||
expectedContents: ['LimeSurvey']
|
||||
- name: 'Entrypoint file content'
|
||||
path: '/var/www/html/entrypoint.sh'
|
||||
expectedContents: ['console.php', 'ADMIN_USER']
|
||||
|
||||
fileExistenceTests:
|
||||
- name: 'Limesurvey files'
|
||||
path: '/var/www/html/index.php'
|
||||
shouldExist: true
|
||||
permissions: '-rw-rw-r--'
|
||||
- name: 'Limesurvey admin files'
|
||||
path: '/var/www/html/admin/index.php'
|
||||
shouldExist: true
|
||||
permissions: '-rw-rw-r--'
|
||||
- name: "Dependencies - PHP - gd"
|
||||
path: '/usr/local/etc/php/conf.d/docker-php-ext-gd.ini'
|
||||
shouldExist: true
|
||||
- name: "Dependencies - PHP - imap"
|
||||
path: '/usr/local/etc/php/conf.d/docker-php-ext-imap.ini'
|
||||
shouldExist: true
|
||||
- name: "Dependencies - PHP - ldap"
|
||||
path: '/usr/local/etc/php/conf.d/docker-php-ext-ldap.ini'
|
||||
shouldExist: true
|
||||
- name: "Dependencies - PHP - pgsql"
|
||||
path: '/usr/local/etc/php/conf.d/docker-php-ext-pgsql.ini'
|
||||
shouldExist: true
|
||||
- name: "Dependencies - PHP - zip"
|
||||
path: '/usr/local/etc/php/conf.d/docker-php-ext-zip.ini'
|
||||
shouldExist: true
|
||||
- name: "Dependencies - PHP - sodium"
|
||||
path: '/usr/local/etc/php/conf.d/docker-php-ext-sodium.ini'
|
||||
shouldExist: true
|
||||
- name: "Dependencies - PHP - pdo_mysql"
|
||||
path: '/usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini'
|
||||
shouldExist: true
|
||||
- name: "Dependencies - PHP - pdo_pgsql"
|
||||
path: '/usr/local/etc/php/conf.d/docker-php-ext-pdo_pgsql.ini'
|
||||
shouldExist: true
|
||||
|
||||
commandTests:
|
||||
- name: "Dependencies - netcat"
|
||||
command: "apk"
|
||||
args: ["info", "-e", "netcat-openbsd"]
|
||||
exitCode: 0
|
||||
- name: "Dependencies - PHP Modules"
|
||||
command: "php"
|
||||
args: ["-m"]
|
||||
expectedOutput: ["ldap", "zip", "pdo_mysql", "pdo_sqlite", "gd", "mbstring", "PDO", "imap"]
|
||||
1
tests/fpm-tests.yaml
Symbolic link
1
tests/fpm-tests.yaml
Symbolic link
@@ -0,0 +1 @@
|
||||
apache-tests.yaml
|
||||
11
tests/run.sh
11
tests/run.sh
@@ -1,11 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
IMAGE=$1
|
||||
|
||||
if [ ! -f container-structure-test ]; then
|
||||
curl -LO https://storage.googleapis.com/container-structure-test/latest/container-structure-test-linux-amd64
|
||||
mv container-structure-test-linux-amd64 container-structure-test
|
||||
chmod +x container-structure-test
|
||||
fi
|
||||
|
||||
./container-structure-test test --image $IMAGE --config tests/image_tests.yaml
|
||||
17
upgrade.sh
17
upgrade.sh
@@ -11,11 +11,14 @@ if [ $# -eq 0 ]
|
||||
fi
|
||||
|
||||
NEW_VERSION=$1
|
||||
MAJOR_VERSION=$(echo $NEW_VERSION | cut -c 1 | awk '{print $1".0"}')
|
||||
MAJOR_VERSION="${NEW_VERSION%%.*}.0"
|
||||
NEW_TAG="${NEW_VERSION%+*}-${NEW_VERSION#*+}"
|
||||
|
||||
grep -qc $NEW_VERSION $MAJOR_VERSION/apache/Dockerfile $MAJOR_VERSION/fpm/Dockerfile $MAJOR_VERSION/fpm-alpine/Dockerfile
|
||||
grep -qc "$NEW_VERSION" "$MAJOR_VERSION/apache/Dockerfile" "$MAJOR_VERSION/fpm/Dockerfile" "$MAJOR_VERSION/fpm-alpine/Dockerfile"
|
||||
|
||||
if [ $? -eq 0 ]
|
||||
GREP_NEW_VERSION_EXIT_CODE=$?
|
||||
|
||||
if [ $GREP_NEW_VERSION_EXIT_CODE -eq 0 ]
|
||||
then
|
||||
echo "Already at version ${NEW_VERSION}"
|
||||
exit 0
|
||||
@@ -27,9 +30,9 @@ wget -P /tmp "https://github.com/LimeSurvey/LimeSurvey/archive/${NEW_VERSION}.ta
|
||||
SHA256_CHECKSUM=$(sha256sum "/tmp/${NEW_VERSION}.tar.gz" | awk '{ print $1 }')
|
||||
|
||||
# Update lines in the files
|
||||
sed -r -i -e "s/[0-9]+(\.[0-9]+)+\+[0-9]+/$NEW_VERSION/" $MAJOR_VERSION/apache/Dockerfile $MAJOR_VERSION/fpm/Dockerfile $MAJOR_VERSION/fpm-alpine/Dockerfile
|
||||
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
|
||||
sed -r -i -e "s/[0-9]+(\.[0-9]+)+\+[0-9]+/$NEW_VERSION/" "$MAJOR_VERSION/apache/Dockerfile" "$MAJOR_VERSION/fpm/Dockerfile" "$MAJOR_VERSION/fpm-alpine/Dockerfile"
|
||||
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_VERSION}"
|
||||
echo "git add 5.0 ; git commit -m 'Upgrading to Version ${NEW_VERSION}' && git tag ${NEW_VERSION}"
|
||||
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}"
|
||||
|
||||
Reference in New Issue
Block a user