services: db: image: postgres:16-alpine container_name: project-e-db ports: - "5432:5432" environment: - POSTGRES_DB=project_e - POSTGRES_USER=project_e - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD} volumes: - project-e-pg-data:/var/lib/postgresql/data networks: - project-e-network healthcheck: test: ["CMD-SHELL", "pg_isready -U project_e -d project_e"] interval: 10s timeout: 5s retries: 5 restart: unless-stopped api: image: git.buzzbee.dev/buzzbeescd/projecte-api:${PROJECTE_IMAGE_TAG:?Set PROJECTE_IMAGE_TAG} container_name: project-e-api ports: - "3001:3000" environment: - NODE_ENV=production - PORT=3000 - DATABASE_URL=postgresql://project_e:${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD}@db:5432/project_e - AUTH_SECRET=${AUTH_SECRET:-stub-secret} - INITIAL_ADMIN_EMAIL=${INITIAL_ADMIN_EMAIL} - INITIAL_ADMIN_PASSWORD=${INITIAL_ADMIN_PASSWORD} networks: - project-e-network depends_on: db: condition: service_healthy restart: unless-stopped spa: image: git.buzzbee.dev/buzzbeescd/projecte-spa:${PROJECTE_IMAGE_TAG:?Set PROJECTE_IMAGE_TAG} container_name: project-e-spa ports: - "3000:80" networks: - project-e-network depends_on: - api restart: unless-stopped worker: image: git.buzzbee.dev/buzzbeescd/projecte-worker:${PROJECTE_IMAGE_TAG:?Set PROJECTE_IMAGE_TAG} container_name: project-e-worker environment: - NODE_ENV=production - DATABASE_URL=postgresql://project_e:${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD}@db:5432/project_e networks: - project-e-network depends_on: db: condition: service_healthy restart: unless-stopped networks: project-e-network: driver: bridge volumes: project-e-pg-data: