services: db: image: postgis/postgis:16-3.4 restart: unless-stopped environment: POSTGRES_DB: ${POSTGRES_DB} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} healthcheck: test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"] interval: 5s timeout: 5s retries: 10 start_period: 10s volumes: - leads4less-db:/var/lib/postgresql/data migrate: build: context: . target: migrate depends_on: db: condition: service_healthy environment: NODE_ENV: ${NODE_ENV} DATABASE_URL: ${DATABASE_URL} COOKIE_SECRET: ${COOKIE_SECRET} PG_BOSS_SCHEMA: ${PG_BOSS_SCHEMA} restart: "no" api: build: context: . target: api depends_on: db: condition: service_healthy migrate: condition: service_completed_successfully environment: NODE_ENV: ${NODE_ENV} APP_HOST: ${APP_HOST} APP_PORT: ${APP_PORT} APP_ORIGIN: ${APP_ORIGIN} DATABASE_URL: ${DATABASE_URL} COOKIE_SECRET: ${COOKIE_SECRET} GOOGLE_MAPS_SERVER_KEY: ${GOOGLE_MAPS_SERVER_KEY} PG_BOSS_SCHEMA: ${PG_BOSS_SCHEMA} SESSION_TTL_DAYS: ${SESSION_TTL_DAYS} restart: unless-stopped ports: - "${APP_PORT}:${APP_PORT}" worker: build: context: . target: worker depends_on: db: condition: service_healthy migrate: condition: service_completed_successfully environment: NODE_ENV: ${NODE_ENV} DATABASE_URL: ${DATABASE_URL} COOKIE_SECRET: ${COOKIE_SECRET} GOOGLE_MAPS_SERVER_KEY: ${GOOGLE_MAPS_SERVER_KEY} PG_BOSS_SCHEMA: ${PG_BOSS_SCHEMA} SESSION_TTL_DAYS: ${SESSION_TTL_DAYS} restart: unless-stopped web: build: context: . target: web args: VITE_API_BASE_URL: ${VITE_API_BASE_URL} VITE_GOOGLE_MAPS_PLATFORM_KEY: ${VITE_GOOGLE_MAPS_PLATFORM_KEY} depends_on: api: condition: service_started restart: unless-stopped ports: - "${WEB_PORT}:80" volumes: leads4less-db: