Files
sol-calc.com/reference/docker-compose.yml
ReachableCEO c399af4c28 housekeeping: Organize files into reports and reference directories
- Move audit reports and status reports to reports/ directory
- Move documentation, configuration files, and infrastructure to reference/ directory
- Keep only core project files (LICENSE, README.md) at root level
- Resolve organizational issues from previous branch merges

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-03 14:42:59 -05:00

189 lines
5.7 KiB
YAML

version: '3.8'
networks:
sol-calc-saas-dev-network:
name: sol-calc-saas-dev-network
volumes:
sol-calc-saas-dev-postgres-data:
name: sol-calc-saas-dev-postgres-data
sol-calc-saas-dev-keycloak-data:
name: sol-calc-saas-dev-keycloak-data
sol-calc-saas-dev-prometheus-data:
name: sol-calc-saas-dev-prometheus-data
sol-calc-saas-dev-loki-data:
name: sol-calc-saas-dev-loki-data
sol-calc-saas-dev-grafana-data:
name: sol-calc-saas-dev-grafana-data
sol-calc-saas-dev-etcd-data:
name: sol-calc-saas-dev-etcd-data
sol-calc-saas-dev-dolibarr-data:
name: sol-calc-saas-dev-dolibarr-data
services:
sol-calc-saas-dev-frontend:
container_name: sol-calc-saas-dev-frontend
image: nginx:alpine
restart: unless-stopped
networks:
- sol-calc-saas-dev-network
ports:
- "12000:80" # Frontend on 12000
sol-calc-saas-dev-postgres:
container_name: sol-calc-saas-dev-postgres
image: postgres:15-alpine
restart: unless-stopped
environment:
POSTGRES_DB: solcalcdb
POSTGRES_USER: solcalcuser
POSTGRES_PASSWORD: solcalcpassword
volumes:
- sol-calc-saas-dev-postgres-data:/var/lib/postgresql/data
networks:
- sol-calc-saas-dev-network
ports:
- "12001:5432" # PostgreSQL on 12001
sol-calc-saas-dev-keycloak:
container_name: sol-calc-saas-dev-keycloak
image: quay.io/keycloak/keycloak:22.0.1
restart: unless-stopped
environment:
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: admin
KC_DB: postgres
KC_DB_URL: jdbc:postgresql://sol-calc-saas-dev-postgres:5432/keycloakdb
KC_DB_USERNAME: keycloakuser
KC_DB_PASSWORD: keycloakpassword
KC_HOSTNAME: localhost
KC_HTTP_PORT: 8080
KC_PROXY: edge
KC_HEALTH_ENABLED: true
KC_METRICS_ENABLED: true
KC_FEATURES: token-exchange,admin-fine-grained-authz
command: start-dev
volumes:
- sol-calc-saas-dev-keycloak-data:/opt/keycloak/data
networks:
- sol-calc-saas-dev-network
ports:
- "12002:8080" # Keycloak on 12002
depends_on:
- sol-calc-saas-dev-postgres
sol-calc-saas-dev-prometheus:
container_name: sol-calc-saas-dev-prometheus
image: prom/prometheus:v2.47.1
restart: unless-stopped
volumes:
- ./prometheus:/etc/prometheus
- sol-calc-saas-dev-prometheus-data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/usr/share/prometheus/console_libraries'
- '--web.console.templates=/usr/share/prometheus/consoles'
networks:
- sol-calc-saas-dev-network
ports:
- "12003:9090" # Prometheus on 12003
sol-calc-saas-dev-loki:
container_name: sol-calc-saas-dev-loki
image: grafana/loki:2.9.0
restart: unless-stopped
volumes:
- ./loki:/etc/loki
- sol-calc-saas-dev-loki-data:/loki
command: -config.file=/etc/loki/loki-config.yaml
networks:
- sol-calc-saas-dev-network
ports:
- "12004:3100" # Loki on 12004
sol-calc-saas-dev-etcd:
container_name: sol-calc-saas-dev-etcd
image: bitnami/etcd:latest
restart: unless-stopped
environment:
ETCD_ADVERTISE_CLIENT_URLS: http://sol-calc-saas-dev-etcd:2379
ETCD_LISTEN_CLIENT_URLS: http://0.0.0.0:2379
ALLOW_NONE_AUTHENTICATION: "yes" # For development only
healthcheck:
test: ["CMD", "etcdctl", "--endpoints=http://localhost:2379", "endpoint", "health"] # Check etcd health
interval: 5s
timeout: 10s
retries: 10
networks:
- sol-calc-saas-dev-network
ports:
- "12013:2379" # etcd client port
- "12014:2380" # etcd peer port
volumes:
- sol-calc-saas-dev-etcd-data:/bitnami/etcd
sol-calc-saas-dev-apisix:
container_name: sol-calc-saas-dev-apisix
image: apache/apisix:latest
restart: on-failure # Restart on failure
environment:
APISIX_DEPLOYMENT_ETCD_HOST: '["http://sol-calc-saas-dev-etcd:2379"]'
networks:
- sol-calc-saas-dev-network
ports:
- "12015:9080" # APISIX HTTP
- "12016:9443" # APISIX HTTPS
- "12017:9180" # APISIX Admin API
depends_on:
sol-calc-saas-dev-etcd:
condition: service_healthy
sol-calc-saas-dev-apisix-dashboard:
container_name: sol-calc-saas-dev-apisix-dashboard
image: apache/apisix-dashboard:latest
restart: unless-stopped
environment:
APISIX_ADMIN_API_BASEURL: http://sol-calc-saas-dev-apisix:9180
APISIX_ADMIN_API_KEY: edd1c9f034335f136f87ad84b625c8f1
networks:
- sol-calc-saas-dev-network
ports:
- "12018:80" # APISIX Dashboard
depends_on:
- sol-calc-saas-dev-apisix
sol-calc-saas-dev-dolibarr:
container_name: sol-calc-saas-dev-dolibarr
image: dolibarr/dolibarr:latest
restart: unless-stopped
environment:
DOCKER_ENABLE_PHP_EXT: gd,ldap,opcache,zip,intl,curl,xmlrpc,soap,exif,pgsql
DOLI_DB_TYPE: pgsql
DOLI_DB_HOST: sol-calc-saas-dev-postgres
DOLI_DB_PORT: 5432
DOLI_DB_NAME: dolibarrdb
DOLI_DB_USER: dolibarruser
DOLI_DB_PASSWORD: dolibarrpassword
networks:
- sol-calc-saas-dev-network
ports:
- "12019:80" # Dolibarr on 12019
volumes:
- sol-calc-saas-dev-dolibarr-data:/var/www/html
depends_on:
- sol-calc-saas-dev-postgres
sol-calc-saas-dev-grafana:
container_name: sol-calc-saas-dev-grafana
image: grafana/grafana:10.1.5
restart: unless-stopped
volumes:
- sol-calc-saas-dev-grafana-data:/var/lib/grafana
networks:
- sol-calc-saas-dev-network
ports:
- "12006:3000" # Grafana on 12006
depends_on:
- sol-calc-saas-dev-prometheus
- sol-calc-saas-dev-loki