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: