Write docker-compose.yml
services:
db:
image: postgres:16-alpine
environment:
POSTGRES_DB: appdb
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
retries: 5
api:
build: ./api
environment:
SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/appdb
SPRING_DATASOURCE_PASSWORD: ${DB_PASSWORD}
depends_on:
db:
condition: service_healthy
ports:
- "8080:8080"
frontend:
build: ./frontend
environment:
NEXT_PUBLIC_API_URL: http://localhost:8080
depends_on:
- api
ports:
- "3000:3000"
volumes:
pgdata: