78 lines
2.1 KiB
YAML
78 lines
2.1 KiB
YAML
services:
|
|
db_prod:
|
|
image: postgres:16-alpine
|
|
container_name: canino_db_prod
|
|
restart: always
|
|
environment:
|
|
POSTGRES_USER: canino_prod
|
|
POSTGRES_PASSWORD: caninopassword_prod
|
|
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
|
|
restart: always
|
|
networks:
|
|
- traefik_public
|
|
|
|
backend_prod:
|
|
build:
|
|
context: ./backend
|
|
dockerfile: Dockerfile
|
|
args:
|
|
NPM_REGISTRY: ${NPM_REGISTRY:-}
|
|
container_name: canino_backend_prod
|
|
restart: always
|
|
environment:
|
|
- DATABASE_URL=postgresql://canino_prod:caninopassword_prod@db_prod:5432/caninodb_prod?schema=public
|
|
- REDIS_HOST=redis_prod
|
|
- REDIS_PORT=6379
|
|
- PORT=3000
|
|
volumes:
|
|
- canina_prod_uploads:/app/uploads
|
|
- /opt/services/proxy/certs/canina:/app/ssl_certs
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.canina-api-prod.rule=Host(`api.canina.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
|
|
args:
|
|
NPM_REGISTRY: ${NPM_REGISTRY:-}
|
|
NEXT_PUBLIC_API_URL: "https://api.canina.ir/api"
|
|
VITE_API_URL: "https://api.canina.ir"
|
|
container_name: canino_frontend_prod
|
|
restart: always
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.canina-prod.rule=Host(`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:
|