Files
mals/docker-compose.portainer.yml

58 lines
1.5 KiB
YAML

# Portainer / Docker Swarm deployment variant.
# Use this stack file in Portainer's "Add Stack" UI.
# Adjust Traefik labels for your domain and router names.
services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_DB: ${POSTGRES_DB:-mals}
POSTGRES_USER: ${POSTGRES_USER:-mals}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-mals}"]
interval: 10s
timeout: 5s
retries: 5
networks:
- mals_internal
deploy:
replicas: 1
resources:
limits:
memory: 512M
api:
image: ${MALS_IMAGE:-mals:latest}
environment:
DATABASE_URL: postgresql+asyncpg://${POSTGRES_USER:-mals}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB:-mals}
MALS_API_KEY: ${MALS_API_KEY}
MALS_PORT: ${MALS_PORT:-8421}
LOG_LEVEL: ${LOG_LEVEL:-INFO}
networks:
- mals_internal
- traefik_public
depends_on:
- postgres
deploy:
replicas: 1
resources:
limits:
memory: 512M
labels:
- "traefik.enable=true"
- "traefik.http.routers.mals.rule=Host(`${MALS_DOMAIN:-mals.internal}`)"
- "traefik.http.routers.mals.entrypoints=websecure"
- "traefik.http.routers.mals.tls=true"
- "traefik.http.services.mals.loadbalancer.server.port=8421"
networks:
mals_internal:
traefik_public:
external: true
volumes:
postgres_data: