Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: pretalx/pretalx-docker
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Choose a base ref
...
head repository: allmende/pretalx-docker
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: next
Choose a head ref
Can’t automatically merge. Don’t worry, you can still create the pull request.
Loading
Showing with 3,362 additions and 759 deletions.
  1. +101 −0 .env.build.example
  2. +54 −0 .env.example
  3. +162 −0 .github/workflows/build-and-push.yml
  4. +824 −0 .github/workflows/build.all.yml
  5. +54 −0 .github/workflows/build.default.yml
  6. +52 −0 .github/workflows/build.extended.yml
  7. +0 −58 .github/workflows/docker.yml
  8. +8 −1 .gitignore
  9. +0 −4 .gitmodules
  10. +0 −54 Dockerfile
  11. +1 −0 LICENSE
  12. +641 −63 README.md
  13. +0 −146 ansible-role/pretalx/tasks/main.yml
  14. +0 −42 ansible-role/pretalx/templates/pretalx.cfg.j2
  15. +0 −20 ansible-role/pretalx/vars/main.yml
  16. +30 −0 bin/build
  17. +34 −0 bin/build.source
  18. +30 −0 bin/build.standalone
  19. +10 −0 bin/clean
  20. +184 −0 compose.yml
  21. +12 −0 compose/build/base.yml
  22. +12 −0 compose/build/default.yml
  23. +12 −0 compose/build/extended.cron.yml
  24. +12 −0 compose/build/extended.yml
  25. +14 −0 compose/build/source/extended.cron.remote.yml
  26. +24 −0 compose/build/source/standalone.extended.cron.remote.yml
  27. +31 −0 compose/build/source/standalone.local.yml
  28. +23 −0 compose/build/source/standalone.remote.yml
  29. +12 −0 compose/build/standalone/default.yml
  30. +12 −0 compose/build/standalone/extended.cron.yml
  31. +12 −0 compose/build/standalone/extended.yml
  32. +11 −0 compose/local.yml
  33. +13 −0 compose/traefik.yml
  34. +53 −0 config/nginx.conf
  35. +13 −13 conf/pretalx.cfg → config/pretalx.cfg.example
  36. +59 −0 context/base/Dockerfile.debian
  37. +79 −0 context/base/entrypoint.sh
  38. +21 −0 context/cron/Dockerfile.debian
  39. +2 −0 context/cron/crontab
  40. +10 −0 context/default/Dockerfile.debian
  41. +7 −0 context/extended/Dockerfile.debian
  42. +29 −0 context/source/extended.cron/Dockerfile.debian.remote
  43. +2 −0 context/source/extended.cron/crontab
  44. +23 −0 context/source/standalone.extended.cron/Dockerfile.debian.remote
  45. +2 −0 context/source/standalone.extended.cron/crontab
  46. +51 −0 context/source/standalone.extended.cron/supervisord.conf
  47. +24 −0 context/source/standalone/Dockerfile.debian.local
  48. +25 −0 context/source/standalone/Dockerfile.debian.remote
  49. +40 −0 context/source/standalone/supervisord.conf
  50. +20 −0 context/standalone/default/Dockerfile.debian
  51. +40 −0 context/standalone/default/supervisord.conf
  52. +16 −0 context/standalone/extended.cron/Dockerfile.debian
  53. +2 −0 context/standalone/extended.cron/crontab
  54. +51 −0 context/standalone/extended.cron/supervisord.conf
  55. +12 −0 context/standalone/extended/Dockerfile.debian
  56. +0 −78 deployment/docker/pretalx.bash
  57. +0 −33 deployment/docker/supervisord.conf
  58. +0 −49 docker-compose.yml
  59. +145 −0 legacy/README.md
  60. +22 −0 legacy/docker-compose.build.yml.example
  61. +13 −0 legacy/docker-compose.env.example
  62. +40 −0 legacy/docker-compose.env.pretalx.example
  63. +176 −0 legacy/docker-compose.yml.example
  64. +0 −1 pretalx
  65. +0 −2 reverse-proxy-examples/ansible/traefik/defaults/main.yml
  66. +0 −65 reverse-proxy-examples/ansible/traefik/tasks/main.yml
  67. +0 −62 reverse-proxy-examples/ansible/traefik/templates/traefik.toml.j2
  68. +0 −4 reverse-proxy-examples/ansible/traefik/vars/main.yml
  69. +0 −3 reverse-proxy-examples/docker-compose/Readme.md
  70. +0 −34 reverse-proxy-examples/docker-compose/traefik.toml
  71. +0 −27 reverse-proxy-examples/nginx/Readme.MD
101 changes: 101 additions & 0 deletions .env.build.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
PRETALX_VERSION=2024.1.0

# Base image
BASE_IMAGE=docker.io/library/python
BASE_TAG=3.12-bookworm

PRETALX_BASE_IMAGE=docker.io/pretalx/base
PRETALX_BASE_TAG=${BASE_TAG}

##
#
# Builds from packaged release versions
#
##

# Pretalx stock image name and tag
PRETALX_IMAGE=docker.io/pretalx/pretalx
PRETALX_TAG=${PRETALX_VERSION}

# Default image
PRETALX_DEFAULT_BASE_IMAGE=${PRETALX_BASE_IMAGE}
PRETALX_DEFAULT_BASE_TAG=${PRETALX_BASE_TAG}


# Extended image with plugins
PRETALX_EXTENDED_BASE_IMAGE=${PRETALX_IMAGE}
PRETALX_EXTENDED_BASE_TAG=${PRETALX_TAG}

PRETALX_EXTENDED_IMAGE=${PRETALX_IMAGE}-extended
PRETALX_EXTENDED_TAG=${PRETALX_TAG}


# Extended image and cron
PRETALX_EXTENDED_CRON_BASE_IMAGE=${PRETALX_EXTENDED_IMAGE}
PRETALX_EXTENDED_CRON_BASE_TAG=${PRETALX_EXTENDED_TAG}

PRETALX_EXTENDED_CRON_IMAGE=${PRETALX_EXTENDED_IMAGE}
PRETALX_EXTENDED_CRON_TAG=${PRETALX_EXTENDED_TAG}-cron


##
#
# Builds from packaged release versions for standalone usage
#
##


# Standalone image
PRETALX_STANDALONE_BASE_IMAGE=${PRETALX_IMAGE}
PRETALX_STANDALONE_BASE_TAG=${PRETALX_TAG}

PRETALX_STANDALONE_IMAGE=docker.io/pretalx/standalone
PRETALX_STANDALONE_TAG=${PRETALX_VERSION}


# Extended standalone image
PRETALX_STANDALONE_EXTENDED_BASE_IMAGE=${PRETALX_STANDALONE_IMAGE}
PRETALX_STANDALONE_EXTENDED_BASE_TAG=${PRETALX_STANDALONE_TAG}

PRETALX_STANDALONE_EXTENDED_IMAGE=${PRETALX_STANDALONE_IMAGE}-extended
PRETALX_STANDALONE_EXTENDED_TAG=${PRETALX_STANDALONE_TAG}


# Extended standalone image with cron
PRETALX_STANDALONE_EXTENDED_CRON_BASE_IMAGE=${PRETALX_STANDALONE_EXTENDED_IMAGE}
PRETALX_STANDALONE_EXTENDED_CRON_BASE_TAG=${PRETALX_STANDALONE_EXTENDED_TAG}

PRETALX_STANDALONE_EXTENDED_CRON_IMAGE=${PRETALX_STANDALONE_IMAGE}-extended
PRETALX_STANDALONE_EXTENDED_CRON_TAG=${PRETALX_STANDALONE_EXTENDED_TAG}-cron


##
#
# Source builds
#
##


PRETALX_REPO=https://github.com/pretalx/pretalx.git
PRETALX_REF=main


# Extended build from remote source with cron
PRETALX_SOURCE_EXTENDED_CRON_IMAGE=${PRETALX_EXTENDED_IMAGE}
PRETALX_SOURCE_EXTENDED_CRON_TAG=${PRETALX_REF}-source-remote-cron


# Standalone build, from local or remote source
PRETALX_SOURCE_STANDALONE_IMAGE=${PRETALX_STANDALONE_IMAGE}
PRETALX_SOURCE_STANDALONE_TAG=${PRETALX_REF}-source

PRETALX_SOURCE_STANDALONE_LOCAL_TAG=${PRETALX_SOURCE_STANDALONE_TAG}-local
PRETALX_SOURCE_STANDALONE_REMOTE_TAG=${PRETALX_SOURCE_STANDALONE_TAG}-remote


# Standalone extended build from remote source with cron
PRETALX_SOURCE_STANDALONE_EXTENDED_CRON_BASE_IMAGE=${PRETALX_SOURCE_STANDALONE_IMAGE}
PRETALX_SOURCE_STANDALONE_EXTENDED_CRON_BASE_TAG=${PRETALX_SOURCE_STANDALONE_REMOTE_TAG}

PRETALX_SOURCE_STANDALONE_EXTENDED_CRON_IMAGE=${PRETALX_SOURCE_STANDALONE_IMAGE}-extended
PRETALX_SOURCE_STANDALONE_EXTENDED_CRON_TAG=${PRETALX_SOURCE_STANDALONE_REMOTE_TAG}-cron
54 changes: 54 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
PRETALX_VERSION=2024.1.0

PRETALX_IMAGE=docker.io/pretalx/pretalx
PRETALX_TAG=${PRETALX_VERSION}

FQDN=localhost.local

POSTGRES_PASSWORD=veryunsecureplschange
POSTGRES_USER=pretalx
POSTGRES_DB=pretalx

PRETALX_LOG_LEVEL=info

PRETALX_DEBUG=False
PRETALX_SITE_URL=http://localhost:8080

PRETALX_LANGUAGE_CODE=en
PRETALX_TIME_ZONE=UTC

PRETALX_DATA_DIR=/data
PRETALX_FILESYSTEM_LOGS=/data/logs

PRETALX_FILESYSTEM_MEDIA=/public/media
PRETALX_FILESYSTEM_STATIC=/public/static

PRETALX_SITE_CSP=
PRETALX_SITE_CSP_STYLE=
PRETALX_SITE_CSP_SCRIPT=
PRETALX_SITE_CSP_IMG=
PRETALX_SITE_CSP_FORM=

PRETALX_LOGGING_EMAIL=
PRETALX_LOGGING_EMAIL_LEVEL=ERROR

#PRETALX_MAIL_FROM=admin@localhost
#PRETALX_MAIL_HOST=localhost
#PRETALX_MAIL_PORT=25
#PRETALX_MAIL_USER=
#PRETALX_MAIL_PASSWORD=
#PRETALX_MAIL_TLS=False
#PRETALX_MAIL_SSL=False

PRETALX_DB_NAME=${POSTGRES_DB}
PRETALX_DB_USER=${POSTGRES_USER}
PRETALX_DB_PASS=${POSTGRES_PASSWORD}
PRETALX_DB_TYPE=postgresql
PRETALX_DB_HOST=postgres
PRETALX_DB_PORT=5432

PRETALX_REDIS=redis://redis/0
PRETALX_REDIS_SESSIONS=true

PRETALX_CELERY_BACKEND=redis://redis/1
PRETALX_CELERY_BROKER=redis://redis/2
162 changes: 162 additions & 0 deletions .github/workflows/build-and-push.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
name: Build/Push OCI image

on:
workflow_call:
inputs:

ref:
description: "Reference for a git object to check out, string"
required: false
type: string
default: ${{ github.ref }}


platforms:
description: "Mandatory comma-separated list of CPU platforms to build for, string"
required: false
type: string
default: linux/amd64,linux/arm64
image-name:
description: "Mandatory name of the image to build, string"
required: true
type: string
default: ${{ github.event.repository.name }}


build-args:
description: "Optional build arguments, takes a YAML multiline string | with ENV=variables"
type: string
required: false
default: ""
image-tags:
description: "Optional additional image tags, takes a YAML multiline string |"
type: string
required: false
default: ""
context:
description: "Optional build context, defaults to the ref that triggered the run, and not ./ in the checkout root, string"
type: string
required: false
default: "."
file:
description: "Optional path to a Dockerfile to build, relative to the build context, string"
type: string
required: false
default: Dockerfile


docker_io:
description: "Optional toggle for disabling Docker Hub Registry, boolean"
type: boolean
required: false
default: true
ghcr_io:
description: "Optional toggle for disabling GitHub Container Registry, boolean"
type: boolean
required: false
default: true

outputs:
imageid:
description: "Image ID, String"
value: ${{ jobs.build-and-push.outputs.imageid }}
digest:
description: "Image digest, String"
value: ${{ jobs.build-and-push.outputs.digest }}
metadata:
description: "Build result metadata, JSON"
value: ${{ jobs.build-and-push.outputs.metadata }}


jobs:

build-and-push:

name: Build/Push image
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
packages: write

outputs:
imageid: ${{ steps.build-push.outputs.imageid }}
digest: ${{ steps.build-push.outputs.digest }}
metadata: ${{ steps.build-push.outputs.metadata }}

env:
docker_io: ${{ inputs.docker_io && secrets.DOCKER_USERNAME != null && secrets.DOCKER_PASSWORD != null }}

steps:

-
name: Checkout repository
uses: actions/checkout@v4
with:
ref: ${{ inputs.ref }}

-
name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
context: git
images: |
name=ghcr.io/${{ github.repository_owner }}/${{ inputs.image-name }},enable=${{ inputs.ghcr_io }}
name=docker.io/${{ github.repository_owner }}/${{ inputs.image-name }},enable=${{ env.docker_io }}
labels: |
org.opencontainers.image.title=${{ inputs.image-name }}
org.opencontainers.image.vendor=Pretalx Community
org.opencontainers.image.description=An unprivileged Pretalx container image for use with the PostgreSQL database and prepared to be used with cron.
org.opencontainers.image.licenses=CC0
tags: |
type=semver,pattern={{ version }}
type=semver,pattern={{ major }}.{{ minor }}
type=ref,event=branch
type=ref,event=tag
type=ref,event=pr
{{ sha }}
${{ inputs.image-tags }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3

-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3


-
name: Login to Docker Hub Registry
uses: docker/login-action@v3
if: github.event_name != 'pull_request' && env.docker_io == 'true'
with:
registry: "docker.io"
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

-
name: Login to GitHub Packages Registry
uses: docker/login-action@v3
if: github.event_name != 'pull_request' && inputs.ghcr_io
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}



-
name: Build and push Container image
uses: docker/build-push-action@v5
id: build-push
with:
push: "${{ github.event_name != 'pull_request' }}"
provenance: false
platforms: "${{ inputs.platforms }}"
context: "{{ defaultContext }}:${{ inputs.context }}"
file: "${{ inputs.file }}"
build-args: "${{ inputs.build-args }}"
tags: "${{ steps.meta.outputs.tags }}"
labels: "${{ steps.meta.outputs.labels }}"
Loading