version: '3.8' services: frontend: build: context: ./frontend dockerfile: Dockerfile ports: - "3000:3000" environment: - NEXT_PUBLIC_API_URL=http://backend:8000 depends_on: - backend networks: - todo-network backend: build: context: ./backend dockerfile: Dockerfile ports: - "8000:8000" environment: - DATABASE_URL=postgresql+asyncpg://postgres:secretpass@db:5432/todo - DAPR_HTTP_PORT=3500 depends_on: - db - kafka networks: - todo-network db: image: postgres:15-alpine environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=secretpass - POSTGRES_DB=todo volumes: - postgres-data:/var/lib/postgresql/data networks: - todo-network kafka: image: redpandadata/redpanda:v23.2.10 command: - redpanda - start - --overprovisioned - --smp=1 - --memory=1G - --reserve-memory=0M - --node-id=0 - --kafka-addr=PLAINTEXT://0.0.0.0:9092,OUTSIDE://0.0.0.0:9093 - --advertise-kafka-addr=PLAINTEXT://kafka:9092,OUTSIDE://localhost:9093 ports: - "9092:9092" - "9093:9093" networks: - todo-network volumes: postgres-data: networks: todo-network: driver: bridge