57 lines
1.5 KiB
YAML
57 lines
1.5 KiB
YAML
# Mealie - Recipe Manager & Meal Planner
|
|
# Domain: recipes.{{DOMAIN}}
|
|
# Database: None (SQLite, built-in)
|
|
# RAM: ~200MB | Pi-compatible: Yes (arm64 only)
|
|
#
|
|
# Environment variables (set in Portainer):
|
|
# (none required for basic usage)
|
|
# SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASSWORD - for email features (optional)
|
|
#
|
|
# Storage layout:
|
|
# Recipe data/images → mealie_data (named volume, NVMe — moderate size)
|
|
#
|
|
# First-time setup:
|
|
# Default login: changeme@example.com / MyPassword
|
|
# Change immediately after first login!
|
|
|
|
services:
|
|
mealie:
|
|
image: ghcr.io/mealie-recipes/mealie:v3.10.2
|
|
container_name: mealie
|
|
restart: unless-stopped
|
|
environment:
|
|
- ALLOW_SIGNUP=false
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=Europe/Budapest
|
|
- MAX_WORKERS=1
|
|
- WEB_CONCURRENCY=1
|
|
- BASE_URL=https://recipes.{{DOMAIN}}
|
|
volumes:
|
|
- mealie_data:/app/data/
|
|
networks:
|
|
- traefik-public
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 1000M
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--spider", "-q", "http://localhost:9000/"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 30s
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.mealie.rule=Host(`recipes.{{DOMAIN}}`)"
|
|
- "traefik.http.routers.mealie.entrypoints=websecure"
|
|
- "traefik.http.routers.mealie.tls=true"
|
|
- "traefik.http.services.mealie.loadbalancer.server.port=9000"
|
|
|
|
volumes:
|
|
mealie_data:
|
|
|
|
networks:
|
|
traefik-public:
|
|
external: true
|