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