services: mealie: image: ghcr.io/mealie-recipes/mealie:latest container_name: mealie restart: always networks: - traefik - internal volumes: - ./mealie-data:/app/data environment: # Backend settings ALLOW_SIGNUP: "false" PUID: 1000 PGID: 1000 TZ: Europe/Ljubljana # <-- Already set here BASE_URL: https://mealie.rozic-dev.com # Database DB_ENGINE: postgres POSTGRES_USER: mealie POSTGRES_PASSWORD: mealie POSTGRES_SERVER: postgres POSTGRES_PORT: 5432 POSTGRES_DB: mealie depends_on: postgres: condition: service_healthy # ----------------------------- # Traefik Reverse Proxy Labels # ----------------------------- labels: - "traefik.enable=true" - "traefik.http.routers.mealie.rule=Host(`mealie.rozic-dev.com`) && PathPrefix(`/`)" - "traefik.http.routers.mealie.entrypoints=websecure" - "traefik.http.routers.mealie.tls.certresolver=letsencrypt" - "traefik.http.routers.mealie.tls=true" - "traefik.http.services.mealie.loadbalancer.server.port=9000" # optional headers - "traefik.http.middlewares.mealie-headers.headers.stsSeconds=31536000" - "traefik.http.middlewares.mealie-headers.headers.forceSTSHeader=true" - "traefik.http.routers.mealie.middlewares=mealie-headers" postgres: image: postgres:15 container_name: mealie-postgres restart: always networks: - internal environment: POSTGRES_DB: mealie POSTGRES_USER: mealie POSTGRES_PASSWORD: mealie # Added for Time Zone consistency (Suggestion 2) TZ: Europe/Ljubljana PGTZ: Europe/Ljubljana volumes: - ./mealie-pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD", "pg_isready", "-U", "mealie"] interval: 30s timeout: 10s retries: 5 # ------------------ # NETWORKS & VOLUMES # ------------------ networks: traefik: external: true name: traefik_default internal: driver: bridge volumes: mealie-data: mealie-pgdata: