name: ${STACK_NAME:-calbook} services: calbook-app: container_name: ${STACK_NAME:-calbook}-app build: . env_file: - .env environment: NODE_ENV: production HOSTNAME: 0.0.0.0 depends_on: - db restart: unless-stopped labels: - "traefik.enable=${ENABLE_TRAEFIK:-false}" - "traefik.http.routers.${TRAEFIK_ROUTER_NAME:-calbook}.rule=Host(`${TRAEFIK_HOST:-calbook.local}`)" - "traefik.http.routers.${TRAEFIK_ROUTER_NAME:-calbook}.entrypoints=${TRAEFIK_ENTRYPOINTS:-websecure}" - "traefik.http.routers.${TRAEFIK_ROUTER_NAME:-calbook}.tls=${TRAEFIK_TLS:-true}" - "traefik.http.routers.${TRAEFIK_ROUTER_NAME:-calbook}.tls.certresolver=${TRAEFIK_CERTRESOLVER:-tls_resolver}" - "traefik.http.routers.${TRAEFIK_ROUTER_NAME:-calbook}.service=${TRAEFIK_SERVICE_NAME:-calbook}" - "traefik.http.services.${TRAEFIK_SERVICE_NAME:-calbook}.loadbalancer.server.port=3000" - "traefik.docker.network=${TRAEFIK_DOCKER_NETWORK:-proxy}" networks: - default - proxy calbook-tools: build: context: . target: tools env_file: - .env environment: NODE_ENV: production depends_on: - db profiles: - tools restart: "no" networks: - default db: container_name: ${STACK_NAME:-calbook}-db image: postgres:16-alpine env_file: - .env environment: POSTGRES_DB: ${POSTGRES_DB} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} volumes: - ./volumes/postgres-${STACK_NAME:-calbook}:/var/lib/postgresql/data restart: unless-stopped mailhog: container_name: ${STACK_NAME:-calbook}-mailhog image: mailhog/mailhog:v1.0.1 restart: unless-stopped networks: proxy: external: true name: ${TRAEFIK_DOCKER_NETWORK:-proxy}