services: backend: container_name: backend restart: always build: context: ./backend dockerfile: Dockerfile environment: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} networks: - proxy depends_on: db: condition: service_healthy frontend: container_name: frontend restart: always build: context: ./frontend dockerfile: Dockerfile networks: - proxy depends_on: - backend db: image: postgres:alpine3.23 container_name: db restart: always environment: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: app_db volumes: - ./db/data:/var/lib/postgresql/data - ./db/init:/docker-entrypoint-initdb.d:ro networks: - proxy healthcheck: test: - CMD-SHELL - pg_isready -U ${POSTGRES_USER} -d app_db interval: 10s timeout: 5s retries: 5 networks: proxy: external: true