Files
Shape_Model_2D/docker-compose.yml
T
Adriano 46e9941488 deploy: PORT/HOST configurabili in .env + .env.example versionato
- .env: aggiunte vars PORT=8080, HOST=127.0.0.1, REGISTRY, TAG
- docker-compose.yml: usa ${PORT:-8080} sia per container env che per
  traefik loadbalancer.server.port (coerenza)
- .env.example: template versionato con valori default sicuri
  (.env resta in .gitignore, non committato)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 16:24:42 +02:00

47 lines
1.7 KiB
YAML

# docker-compose per deploy VPS con Traefik.
# Assume che Traefik sia già attivo sulla VPS con:
# - network esterna "traefik" (adatta nome se diverso)
# - entrypoint "websecure" su :443
# - certresolver "letsencrypt" configurato
#
# Adattare eventualmente: nome network, entrypoint, certresolver.
services:
pm2d:
image: ${REGISTRY:-localhost:5000}/pm2d:${TAG:-latest}
container_name: pm2d
restart: unless-stopped
environment:
IMAGES_DIR: /data/images
HOST: 0.0.0.0
PORT: ${PORT:-8080}
volumes:
# Persistenza immagini tra restart (upload/selezione)
- ./images:/data/images
networks:
- traefik
labels:
- "traefik.enable=true"
# Router HTTPS principale
- "traefik.http.routers.pm2d.rule=Host(`pm.tielogic.xyz`)"
- "traefik.http.routers.pm2d.entrypoints=websecure"
- "traefik.http.routers.pm2d.tls=true"
- "traefik.http.routers.pm2d.tls.certresolver=letsencrypt"
- "traefik.http.services.pm2d.loadbalancer.server.port=${PORT:-8080}"
# Middleware: upload fino a 50MB (default Traefik bufferizza a 4MB)
- "traefik.http.middlewares.pm2d-bodysize.buffering.maxRequestBodyBytes=52428800"
- "traefik.http.routers.pm2d.middlewares=pm2d-bodysize"
# Redirect HTTP → HTTPS
- "traefik.http.routers.pm2d-http.rule=Host(`pm.tielogic.xyz`)"
- "traefik.http.routers.pm2d-http.entrypoints=web"
- "traefik.http.routers.pm2d-http.middlewares=pm2d-redirect-https"
- "traefik.http.middlewares.pm2d-redirect-https.redirectscheme.scheme=https"
- "traefik.http.middlewares.pm2d-redirect-https.redirectscheme.permanent=true"
networks:
traefik:
external: true