Files
pos-system/deployments/local/docker-compose.yml
Ho Ngoc Hai 4da46b5b8e Sure! Pl
2025-12-27 01:31:10 +07:00

121 lines
3.2 KiB
YAML

version: '3.8'
# NOTE: This setup uses Neon PostgreSQL database
# Setup Neon database URL in .env.local file
# See infra/databases/neon/README.md for setup instructions
services:
redis:
image: redis:7-alpine
container_name: redis-cache-local
command: redis-server /etc/redis/redis.conf
ports:
- "6379:6379"
volumes:
- redis_data:/data
- ../../infra/databases/redis/redis.conf:/etc/redis/redis.conf
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 3s
retries: 5
networks:
- microservices-network
auth-service:
build:
context: ../..
dockerfile: services/auth-service/Dockerfile
container_name: auth-service-local
env_file:
- .env.local
environment:
- NODE_ENV=development
- PORT=5001
# DATABASE_URL should be set in .env.local (Neon database URL)
- REDIS_HOST=redis
- REDIS_PORT=6379
- JWT_SECRET=${JWT_SECRET:-dev-jwt-secret-change-in-production}
- JWT_EXPIRES_IN=15m
- JWT_REFRESH_SECRET=${JWT_REFRESH_SECRET:-dev-refresh-secret-change-in-production}
- JWT_REFRESH_EXPIRES_IN=7d
- CORS_ORIGIN=http://localhost:3000,http://localhost:3001
- LOG_LEVEL=debug
- SERVICE_NAME=auth-service
ports:
- "5001:5001"
depends_on:
redis:
condition: service_healthy
networks:
- microservices-network
web-admin:
build:
context: ../..
dockerfile: apps/web-admin/Dockerfile
container_name: web-admin-local
environment:
- NODE_ENV=development
- NEXT_PUBLIC_API_URL=http://localhost/api/v1
ports:
- "3000:3000"
depends_on:
- auth-service
networks:
- microservices-network
labels:
- "traefik.enable=true"
- "traefik.http.routers.web-admin.rule=Host(`admin.localhost`)"
- "traefik.http.routers.web-admin.entrypoints=web"
- "traefik.http.services.web-admin.loadbalancer.server.port=3000"
web-client:
build:
context: ../..
dockerfile: apps/web-client/Dockerfile
container_name: web-client-local
environment:
- NODE_ENV=development
- NEXT_PUBLIC_API_URL=http://localhost/api/v1
ports:
- "3001:3000"
depends_on:
- auth-service
networks:
- microservices-network
labels:
- "traefik.enable=true"
- "traefik.http.routers.web-client.rule=Host(`localhost`)"
- "traefik.http.routers.web-client.entrypoints=web"
- "traefik.http.services.web-client.loadbalancer.server.port=3000"
traefik:
image: traefik:v2.10
container_name: traefik-local
command:
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--log.level=INFO"
ports:
- "80:80"
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ../../infra/traefik:/etc/traefik
networks:
- microservices-network
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik.rule=Host(`traefik.localhost`)"
- "traefik.http.routers.traefik.entrypoints=web"
volumes:
redis_data:
networks:
microservices-network:
driver: bridge