version: '3.8' services: postgres: image: postgres:14-alpine container_name: finance_postgres_prod environment: POSTGRES_USER: ${DB_USERNAME} POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_DB: ${DB_NAME} volumes: - postgres_data_prod:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${DB_USERNAME} -d ${DB_NAME}"] interval: 10s timeout: 5s retries: 5 networks: - finance_network_prod restart: unless-stopped app: build: context: . dockerfile: Dockerfile target: production container_name: finance_app_prod ports: - "3000:3000" environment: - NODE_ENV=production - DB_HOST=postgres - DB_PORT=5432 - DB_USERNAME=${DB_USERNAME} - DB_PASSWORD=${DB_PASSWORD} - DB_NAME=${DB_NAME} - JWT_SECRET=${JWT_SECRET} - JWT_REFRESH_SECRET=${JWT_REFRESH_SECRET} depends_on: postgres: condition: service_healthy networks: - finance_network_prod restart: unless-stopped volumes: postgres_data_prod: networks: finance_network_prod: driver: bridge