Files
itinova-podcasts/docker-compose.yml
2026-07-08 13:07:18 +02:00

51 lines
1.4 KiB
YAML

services:
app:
container_name: itinova-podcasts
build:
context: ./src
dockerfile: ../Dockerfile
restart: unless-stopped
environment:
- NODE_ENV=production
- PORT=3000
- DATABASE_URL=mysql://podcasts_user:PodcastsDB2026Secure!@podcasts-db:3306/itinova_podcasts
- JWT_SECRET=podcasts-jwt-secret-2026-prod
depends_on:
podcasts-db:
condition: service_healthy
networks:
- web
labels:
- "traefik.enable=true"
- "traefik.http.routers.podcasts.rule=Host(`podcasts.santinova-soft.org`)"
- "traefik.http.routers.podcasts.entrypoints=websecure"
- "traefik.http.routers.podcasts.tls=true"
- "traefik.http.routers.podcasts.tls.certresolver=letsencrypt"
- "traefik.http.services.podcasts.loadbalancer.server.port=3000"
- "traefik.docker.network=web"
podcasts-db:
container_name: podcasts-db
image: mysql:8.0
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=PodcastsRootDB2026!
- MYSQL_DATABASE=itinova_podcasts
- MYSQL_USER=podcasts_user
- MYSQL_PASSWORD=PodcastsDB2026Secure!
volumes:
- podcasts-db-data:/var/lib/mysql
networks:
- web
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-pPodcastsRootDB2026!"]
interval: 10s
timeout: 5s
retries: 5
networks:
web:
external: true
volumes:
podcasts-db-data: