canina/docker-compose.yml
parsaaghayi dc88677169
Some checks failed
Deploy Canina / deploy (push) Waiting to run
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 11s
fix(security): resolve all critical, high, and medium security vulnerabilities
2026-09-23 22:05:12 +03:30

92 lines
2.6 KiB
YAML

services:
db_prod:
image: postgres:16-alpine
container_name: canino_db_prod
restart: always
environment:
POSTGRES_USER: ${POSTGRES_USER:-canino_prod}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB:-caninodb_prod}
volumes:
- canina_prod_db:/var/lib/postgresql/data
networks:
- traefik_public
redis_prod:
image: redis:7-alpine
container_name: canino_redis_prod
command: >
sh -c 'if [ -n "$$REDIS_PASSWORD" ]; then
exec redis-server --requirepass "$$REDIS_PASSWORD";
else
exec redis-server;
fi'
environment:
- REDIS_PASSWORD=${REDIS_PASSWORD:-}
restart: always
networks:
- traefik_public
backend_prod:
build:
context: ./backend
dockerfile: Dockerfile
container_name: canino_backend_prod
restart: always
dns:
- 217.218.127.127
- 217.218.155.155
environment:
- DATABASE_URL=postgresql://${POSTGRES_USER:-canino_prod}:${POSTGRES_PASSWORD}@db_prod:5432/${POSTGRES_DB:-caninodb_prod}?schema=public
- REDIS_HOST=redis_prod
- REDIS_PORT=6379
- REDIS_PASSWORD=${REDIS_PASSWORD:-}
- JWT_ACCESS_SECRET=${JWT_ACCESS_SECRET}
- JWT_REFRESH_SECRET=${JWT_REFRESH_SECRET}
- ADMIN_EMAIL=${ADMIN_EMAIL:-admin@canina.ir}
- ADMIN_PASSWORD=${ADMIN_PASSWORD}
- PORT=3000
volumes:
- canina_prod_uploads:/app/uploads
labels:
- "traefik.enable=true"
- "traefik.http.routers.canina-api-prod.rule=Host(`api.canina.ir`) || Host(`apicanina.parsaaghayi.ir`)"
- "traefik.http.routers.canina-api-prod.entrypoints=websecure"
- "traefik.http.routers.canina-api-prod.tls=true"
- "traefik.http.services.canina-api-prod.loadbalancer.server.port=3000"
depends_on:
- db_prod
- redis_prod
networks:
- traefik_public
frontend_prod:
build:
context: .
dockerfile: Dockerfile
container_name: canino_frontend_prod
restart: always
dns:
- 217.218.127.127
- 217.218.155.155
environment:
- NEXT_PUBLIC_API_URL=http://backend_prod:3000
labels:
- "traefik.enable=true"
- "traefik.http.routers.canina-prod.rule=Host(`canina.ir`) || Host(`www.canina.ir`) || Host(`admin.canina.ir`)"
- "traefik.http.routers.canina-prod.entrypoints=websecure"
- "traefik.http.routers.canina-prod.tls=true"
- "traefik.http.services.canina-prod.loadbalancer.server.port=8080"
depends_on:
- backend_prod
networks:
- traefik_public
networks:
traefik_public:
external: true
volumes:
canina_prod_db:
canina_prod_uploads: