services: db: image: postgres:16-alpine container_name: zkt-db restart: unless-stopped env_file: - .env.local environment: POSTGRES_DB: ${LOCAL_POSTGRES_DB} POSTGRES_USER: ${LOCAL_POSTGRES_USER} POSTGRES_PASSWORD: ${LOCAL_POSTGRES_PASSWORD} volumes: - pgdata:/var/lib/postgresql/data networks: - app-net healthcheck: test: ["CMD-SHELL", "pg_isready -U ${LOCAL_POSTGRES_USER} -d ${LOCAL_POSTGRES_DB}"] interval: 10s timeout: 5s retries: 5 backend: build: context: ./backend container_name: zkt-backend restart: unless-stopped env_file: - .env.local environment: DB_HOST: ${LOCAL_DB_HOST} DB_PORT: ${LOCAL_DB_PORT} DB_NAME: ${LOCAL_POSTGRES_DB} DB_USER: ${LOCAL_POSTGRES_USER} DB_PASSWORD: ${LOCAL_POSTGRES_PASSWORD} DB_SSLMODE: ${LOCAL_DB_SSLMODE} APP_PORT: ${LOCAL_APP_PORT} depends_on: db: condition: service_healthy networks: - app-net frontend: build: context: ./frontend container_name: zkt-frontend restart: unless-stopped depends_on: - backend environment: BACKEND_URL: http://backend:5000 ports: - "8080:80" networks: - app-net networks: app-net: external: true name: zkt_app_net volumes: pgdata: external: true name: zkt_pgdata