# version: "3.9" services: db: image: postgres:16 container_name: pg-db restart: unless-stopped env_file: .env environment: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB} volumes: - db-data:/var/lib/postgresql/data ports: - "5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] interval: 5s timeout: 3s retries: 10 api: build: context: ./api dockerfile: Dockerfile container_name: node-api restart: unless-stopped env_file: .env environment: PORT: ${PORT} DATABASE_URL: ${DATABASE_URL} NODE_ENV: ${NODE_ENV} expose: - "8080" # nur im Compose-Netz depends_on: db: condition: service_healthy web: build: context: ./apache dockerfile: Dockerfile container_name: apache-web restart: unless-stopped env_file: .env ports: - "${APACHE_HTTP_PORT}:80" # Host:8088 -> Apache:80 depends_on: - api pgadmin: image: dpage/pgadmin4:8 container_name: pg-admin restart: unless-stopped environment: PGADMIN_DEFAULT_EMAIL: admin@example.com PGADMIN_DEFAULT_PASSWORD: admin123 ports: - "5050:80" depends_on: - db volumes: db-data: