92 lines
2.6 KiB
YAML
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:
|