Customize Pretix for our use
This commit is contained in:
commit
aa1e3a65ae
4 changed files with 125 additions and 0 deletions
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