services: app: build: context: . dockerfile: Dockerfile ports: - "${PORT:-3000}:3000" environment: - NODE_ENV=production - DB_HOST=db - DB_PORT=5432 - DB_NAME=${DB_NAME:-gem_track} - DB_USER=${DB_USER:-postgres} - DB_PASSWORD=${DB_PASSWORD:-postgres} - JWT_SECRET=${JWT_SECRET:-change-me-in-production} - API_BASE_PATH=${API_BASE_PATH:-/api} - SWAGGER_PATH=${SWAGGER_PATH:-/docs} - TYPEORM_SYNCHRONIZE=true - DB_INITIALIZE_ON_BOOTSTRAP=true depends_on: db: condition: service_healthy networks: - gem-track-network db: image: postgres:16-alpine environment: - POSTGRES_DB=${DB_NAME:-gem_track} - POSTGRES_USER=${DB_USER:-postgres} - POSTGRES_PASSWORD=${DB_PASSWORD:-postgres} ports: - "5432:5432" volumes: - pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-postgres} -d ${DB_NAME:-gem_track}"] interval: 10s timeout: 5s retries: 5 networks: - gem-track-network networks: gem-track-network: driver: bridge volumes: pgdata: