Learn by Directing AI
All materials

docker-compose.yml

ymldocker-compose.yml
# VERIFICATION: Run `docker compose up -d` and verify all services are healthy before use.
# Expected services: export-tracker, member-portal, fermentation-api, shipping-api, payment-processor, grafana, loki, alloy
# Expected ports: 3000 (export-tracker), 5000 (member-portal), 8080 (fermentation-api), 4000 (shipping-api), 6000 (payment-processor), 3001 (grafana), 3100 (loki)

version: "3.8"

services:
  export-tracker:
    build: ./export-tracker
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
      - SHIPPING_API_URL=http://shipping-api:4000
      - DB_PATH=/app/data/exports.db
    volumes:
      - export-data:/app/data
    depends_on:
      - shipping-api

  member-portal:
    build: ./member-portal
    ports:
      - "5000:5000"
    environment:
      - FLASK_ENV=production
      - SECRET_KEY=cooperative-secret-key-2024
      - DB_PATH=/app/data/members.db
    volumes:
      - member-data:/app/data

  fermentation-api:
    build: ./fermentation-api
    ports:
      - "8080:8080"
    environment:
      - FLASK_ENV=production

  shipping-api:
    build:
      context: .
      dockerfile: shipping-api-Dockerfile
    ports:
      - "4000:4000"
    environment:
      - NODE_ENV=production

  payment-processor:
    build: ./payment-processor
    ports:
      - "6000:6000"
    environment:
      - FLASK_ENV=production

  grafana:
    image: grafana/grafana:10.2.3
    ports:
      - "3001:3000"
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin
      - GF_AUTH_ANONYMOUS_ENABLED=true
      - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
    volumes:
      - ./grafana-provisioning:/etc/grafana/provisioning

  loki:
    image: grafana/loki:2.9.3
    ports:
      - "3100:3100"
    command: -config.file=/etc/loki/local-config.yaml

  alloy:
    image: grafana/alloy:v1.0.0
    volumes:
      - ./alloy-config.yaml:/etc/alloy/config.alloy
      - /var/run/docker.sock:/var/run/docker.sock:ro
    depends_on:
      - loki

volumes:
  export-data:
  member-data: