Files
docker-compose/tandoor/compose.yaml
Sebastian Krüger ee25e72616 fix: correct Tandoor Traefik port from 8080 to 80
Tandoor's internal Nginx listens on port 80, not 8080. This was causing
502 Bad Gateway errors because Traefik was trying to connect to the wrong port.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 21:07:02 +01:00

79 lines
3.1 KiB
YAML

services:
tandoor:
image: ${TANDOOR_IMAGE:-vabene1111/recipes:latest}
container_name: ${TANDOOR_COMPOSE_PROJECT_NAME}_app
restart: unless-stopped
environment:
# Django settings
SECRET_KEY: ${TANDOOR_SECRET_KEY}
ALLOWED_HOSTS: ${TANDOOR_TRAEFIK_HOST}
TIMEZONE: ${TIMEZONE:-Europe/Berlin}
# Database configuration
DB_ENGINE: django.db.backends.postgresql
POSTGRES_HOST: ${CORE_DB_HOST}
POSTGRES_PORT: ${CORE_DB_PORT}
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_DB: ${TANDOOR_DB_NAME}
# Application settings
ENABLE_SIGNUP: ${TANDOOR_ENABLE_SIGNUP:-0}
REVERSE_PROXY_AUTH: ${TANDOOR_REVERSE_PROXY_AUTH:-0}
# Email configuration (IONOS SMTP)
EMAIL_HOST: ${EMAIL_SMTP_HOST}
EMAIL_PORT: ${EMAIL_SMTP_PORT}
EMAIL_HOST_USER: ${EMAIL_SMTP_USER}
EMAIL_HOST_PASSWORD: ${EMAIL_SMTP_PASSWORD}
EMAIL_USE_TLS: ${TANDOOR_EMAIL_USE_TLS:-0}
EMAIL_USE_SSL: ${TANDOOR_EMAIL_USE_SSL:-1}
DEFAULT_FROM_EMAIL: ${EMAIL_FROM}
# Gunicorn settings
GUNICORN_MEDIA: ${TANDOOR_GUNICORN_MEDIA:-0}
# Optional features
COMMENT_PREF_DEFAULT: ${TANDOOR_COMMENT_PREF_DEFAULT:-1}
SHOPPING_MIN_AUTOSYNC_INTERVAL: ${TANDOOR_SHOPPING_MIN_AUTOSYNC_INTERVAL:-5}
volumes:
- tandoor_staticfiles:/opt/recipes/staticfiles
- tandoor_mediafiles:/opt/recipes/mediafiles
depends_on:
- postgres
networks:
- compose_network
labels:
- 'traefik.enable=${TANDOOR_TRAEFIK_ENABLED}'
# HTTP to HTTPS redirect
- 'traefik.http.middlewares.${TANDOOR_COMPOSE_PROJECT_NAME}-redirect-web-secure.redirectscheme.scheme=https'
- 'traefik.http.routers.${TANDOOR_COMPOSE_PROJECT_NAME}-web.middlewares=${TANDOOR_COMPOSE_PROJECT_NAME}-redirect-web-secure'
- 'traefik.http.routers.${TANDOOR_COMPOSE_PROJECT_NAME}-web.rule=Host(`${TANDOOR_TRAEFIK_HOST}`)'
- 'traefik.http.routers.${TANDOOR_COMPOSE_PROJECT_NAME}-web.entrypoints=web'
# HTTPS router
- 'traefik.http.routers.${TANDOOR_COMPOSE_PROJECT_NAME}-web-secure.rule=Host(`${TANDOOR_TRAEFIK_HOST}`)'
- 'traefik.http.routers.${TANDOOR_COMPOSE_PROJECT_NAME}-web-secure.tls.certresolver=resolver'
- 'traefik.http.routers.${TANDOOR_COMPOSE_PROJECT_NAME}-web-secure.entrypoints=web-secure'
- 'traefik.http.middlewares.${TANDOOR_COMPOSE_PROJECT_NAME}-web-secure-compress.compress=true'
- 'traefik.http.routers.${TANDOOR_COMPOSE_PROJECT_NAME}-web-secure.middlewares=${TANDOOR_COMPOSE_PROJECT_NAME}-web-secure-compress,security-headers@file'
# Service
- 'traefik.http.services.${TANDOOR_COMPOSE_PROJECT_NAME}-web-secure.loadbalancer.server.port=80'
- 'traefik.docker.network=${NETWORK_NAME}'
# Watchtower
- 'com.centurylinklabs.watchtower.enable=${WATCHTOWER_LABEL_ENABLE}'
volumes:
tandoor_staticfiles:
name: ${TANDOOR_COMPOSE_PROJECT_NAME}_staticfiles
tandoor_mediafiles:
name: ${TANDOOR_COMPOSE_PROJECT_NAME}_mediafiles
networks:
compose_network:
name: ${NETWORK_NAME}
external: true