Customize Pretix for our use
This commit is contained in:
commit
aa1e3a65ae
13
.gitlab-ci.yml
Normal file
13
.gitlab-ci.yml
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
build-image:
|
||||||
|
image:
|
||||||
|
name: gcr.io/kaniko-project/executor:debug
|
||||||
|
entrypoint: [""]
|
||||||
|
script:
|
||||||
|
- mkdir -p /kaniko/.docker
|
||||||
|
- echo "{\"auths\":{\"${CI_REGISTRY}\":{\"auth\":\"$(printf "%s:%s" "${CI_REGISTRY_USER}" "${CI_REGISTRY_PASSWORD}" | base64 | tr -d '\n')\"}}}" > /kaniko/.docker/config.json
|
||||||
|
- >-
|
||||||
|
/kaniko/executor
|
||||||
|
--context "${CI_PROJECT_DIR}"
|
||||||
|
--dockerfile "${CI_PROJECT_DIR}/Dockerfile"
|
||||||
|
--destination "${IMAGE}"
|
||||||
|
--destination "${CI_REGISTRY_IMAGE}/ccchh-pretix:23.10.0"
|
13
Dockerfile
Normal file
13
Dockerfile
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
FROM docker.io/pretix/standalone:2023.10.0
|
||||||
|
|
||||||
|
USER root
|
||||||
|
COPY entrypoint.sh /
|
||||||
|
RUN true \
|
||||||
|
&& chmod +x /entrypoint.sh \
|
||||||
|
&& touch /etc/pretix/pretix.cfg \
|
||||||
|
&& chown pretixuser /etc/pretix/pretix.cfg \
|
||||||
|
&& true
|
||||||
|
|
||||||
|
USER pretixuser
|
||||||
|
|
||||||
|
ENTRYPOINT /entrypoint.sh
|
52
README.md
Normal file
52
README.md
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
# Pretix Customized for CCCHH
|
||||||
|
|
||||||
|
The image adds an entrypoint script that creates `/etc/pretix/pretix.cfg` from environment variables at startup. The file is only created if it doesn't exist or is empty; this means that you can still mount your own config file into the container as with the original image.
|
||||||
|
|
||||||
|
The script will fail and point out if required variables are not set.
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
The config file is created from a template, with environment variables substituted.
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[pretix]
|
||||||
|
instance_name=${PRETIX_INSTANCE_NAME}
|
||||||
|
url=${PRETIX_URL}
|
||||||
|
currency=${PRETIX_CURRENCY:-EUR}
|
||||||
|
datadir=${PRETIX_DATADIR:-/data}
|
||||||
|
trust_x_forwarded_for=${PRETIX_TRUST_X_FORWARDED_FOR:-on}
|
||||||
|
trust_x_forwarded_proto=${PRETIX_TRUST_X_FORWARDED_PROTO:-on}
|
||||||
|
|
||||||
|
[database]
|
||||||
|
backend=${DATABASE_BACKEND}
|
||||||
|
name=${DATABASE_NAME}
|
||||||
|
user=${DATABASE_USER}
|
||||||
|
password=${DATABASE_PASSWORD}
|
||||||
|
host=${DATABASE_HOST}
|
||||||
|
|
||||||
|
[mail]
|
||||||
|
from=${MAIL_FROM}
|
||||||
|
host=${MAIL_HOST}
|
||||||
|
|
||||||
|
[redis]
|
||||||
|
location=${REDIS_LOCATION}
|
||||||
|
sessions=${REDIS_SESSION:-true}
|
||||||
|
|
||||||
|
[celery]
|
||||||
|
backend=${CELERY_BACKEND}
|
||||||
|
broker=${CELERY_BROKER}
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
## Updating the image
|
||||||
|
|
||||||
|
You will need to look up the latest tag at https://hub.docker.com/r/pretix/standalone/tags and change it in both the `Dockerfile`` and in ``.gitlab-ci.yml`.
|
||||||
|
|
||||||
|
## Testing the build
|
||||||
|
|
||||||
|
```shell
|
||||||
|
docker build -t ccchh-pretix:latest .
|
||||||
|
```
|
||||||
|
|
||||||
|
```shell
|
||||||
|
docker run -it --rm --name pretix -e PRETIX_INSTANCE_NAME=foo -e PRETIX_URL=http://localhost -e DATABASE_BACKEND=postgresql -e DATABASE_NAME=postgres -e DATABASE_USER=postgres -e DATABASE_PASSWORD=geheim -e DATABASE_HOST=postgres -e MAIL_FROM=foo@example.com -e MAIL_HOST=mail -e REDIS_LOCATION=redis://redis/0 -e CELERY_BACKEND=redis://redis/0 -e CELERY_BROKER=redis://redis/1 ccchh-pretix```
|
47
entrypoint.sh
Executable file
47
entrypoint.sh
Executable file
|
@ -0,0 +1,47 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [ ! -s /etc/pretix/pretix.cfg ]; then
|
||||||
|
echo "Creating /etc/pretix/pretix.cfg from environment" >&2
|
||||||
|
missing=""
|
||||||
|
for i in PRETIX_INSTANCE_NAME PRETIX_URL DATABASE_BACKEND DATABASE_NAME DATABASE_USER DATABASE_PASSWORD DATABASE_HOST MAIL_FROM MAIL_HOST REDIS_LOCATION CELERY_BACKEND CELERY_BROKER; do
|
||||||
|
if eval "[ -z \"\${$i}\" ]"; then
|
||||||
|
missing="${missing} $i"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ -n "${missing}" ]; then
|
||||||
|
echo "You need to set these environment variables to configure Pretix:$missing" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
cat >/etc/pretix/pretix.cfg <<EOF
|
||||||
|
[pretix]
|
||||||
|
instance_name=${PRETIX_INSTANCE_NAME}
|
||||||
|
url=${PRETIX_URL}
|
||||||
|
currency=${PRETIX_CURRENCY:-EUR}
|
||||||
|
datadir=${PRETIX_DATADIR:-/data}
|
||||||
|
trust_x_forwarded_for=${PRETIX_TRUST_X_FORWARDED_FOR:-on}
|
||||||
|
trust_x_forwarded_proto=${PRETIX_TRUST_X_FORWARDED_PROTO:-on}
|
||||||
|
|
||||||
|
[database]
|
||||||
|
backend=${DATABASE_BACKEND}
|
||||||
|
name=${DATABASE_NAME}
|
||||||
|
user=${DATABASE_USER}
|
||||||
|
password=${DATABASE_PASSWORD}
|
||||||
|
host=${DATABASE_HOST}
|
||||||
|
|
||||||
|
[mail]
|
||||||
|
from=${MAIL_FROM}
|
||||||
|
host=${MAIL_HOST}
|
||||||
|
|
||||||
|
[redis]
|
||||||
|
location=${REDIS_LOCATION}
|
||||||
|
sessions=${REDIS_SESSION:-true}
|
||||||
|
|
||||||
|
[celery]
|
||||||
|
backend=${CELERY_BACKEND}
|
||||||
|
broker=${CELERY_BROKER}
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec pretix $@
|
Reference in a new issue