2026-04-15 20:59:05 +02:00
|
|
|
# Cameleer Server (standalone)
|
|
|
|
|
# Loaded in standalone deployment mode
|
|
|
|
|
|
|
|
|
|
services:
|
|
|
|
|
cameleer-traefik:
|
|
|
|
|
volumes:
|
|
|
|
|
- ./traefik-dynamic.yml:/etc/traefik/dynamic.yml:ro
|
|
|
|
|
|
|
|
|
|
cameleer-postgres:
|
|
|
|
|
image: postgres:16-alpine
|
|
|
|
|
environment:
|
|
|
|
|
POSTGRES_DB: ${POSTGRES_DB:-cameleer}
|
|
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER:-cameleer} -d $${POSTGRES_DB:-cameleer}"]
|
|
|
|
|
|
|
|
|
|
cameleer-server:
|
|
|
|
|
image: ${SERVER_IMAGE:-gitea.siegeln.net/cameleer/cameleer-server}:${VERSION:-latest}
|
|
|
|
|
container_name: cameleer-server
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
depends_on:
|
|
|
|
|
cameleer-postgres:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
environment:
|
|
|
|
|
CAMELEER_SERVER_TENANT_ID: default
|
|
|
|
|
SPRING_DATASOURCE_URL: jdbc:postgresql://cameleer-postgres:5432/${POSTGRES_DB:-cameleer}?currentSchema=tenant_default
|
|
|
|
|
SPRING_DATASOURCE_USERNAME: ${POSTGRES_USER:-cameleer}
|
|
|
|
|
SPRING_DATASOURCE_PASSWORD: ${POSTGRES_PASSWORD}
|
|
|
|
|
CAMELEER_SERVER_CLICKHOUSE_URL: jdbc:clickhouse://cameleer-clickhouse:8123/cameleer
|
|
|
|
|
CAMELEER_SERVER_CLICKHOUSE_USERNAME: default
|
|
|
|
|
CAMELEER_SERVER_CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD}
|
|
|
|
|
CAMELEER_SERVER_SECURITY_BOOTSTRAPTOKEN: ${BOOTSTRAP_TOKEN:?BOOTSTRAP_TOKEN must be set in .env}
|
2026-04-23 09:30:11 +02:00
|
|
|
CAMELEER_SERVER_SECURITY_JWTSECRET: ${CAMELEER_SERVER_SECURITY_JWTSECRET:?CAMELEER_SERVER_SECURITY_JWTSECRET must be set in .env}
|
2026-04-15 20:59:05 +02:00
|
|
|
CAMELEER_SERVER_SECURITY_UIUSER: ${SERVER_ADMIN_USER:-admin}
|
|
|
|
|
CAMELEER_SERVER_SECURITY_UIPASSWORD: ${SERVER_ADMIN_PASS:?SERVER_ADMIN_PASS must be set in .env}
|
|
|
|
|
CAMELEER_SERVER_SECURITY_CORSALLOWEDORIGINS: ${PUBLIC_PROTOCOL:-https}://${PUBLIC_HOST:-localhost}
|
|
|
|
|
CAMELEER_SERVER_RUNTIME_ENABLED: "true"
|
|
|
|
|
CAMELEER_SERVER_RUNTIME_SERVERURL: http://cameleer-server:8081
|
|
|
|
|
CAMELEER_SERVER_RUNTIME_ROUTINGDOMAIN: ${PUBLIC_HOST:-localhost}
|
|
|
|
|
CAMELEER_SERVER_RUNTIME_ROUTINGMODE: path
|
|
|
|
|
CAMELEER_SERVER_RUNTIME_JARSTORAGEPATH: /data/jars
|
|
|
|
|
CAMELEER_SERVER_RUNTIME_DOCKERNETWORK: cameleer-apps
|
|
|
|
|
CAMELEER_SERVER_RUNTIME_JARDOCKERVOLUME: cameleer-jars
|
|
|
|
|
CAMELEER_SERVER_RUNTIME_BASEIMAGE: gitea.siegeln.net/cameleer/cameleer-runtime-base:${VERSION:-latest}
|
|
|
|
|
labels:
|
|
|
|
|
- traefik.enable=true
|
|
|
|
|
- traefik.http.routers.server-api.rule=PathPrefix(`/api`)
|
|
|
|
|
- traefik.http.routers.server-api.entrypoints=websecure
|
|
|
|
|
- traefik.http.routers.server-api.tls=true
|
|
|
|
|
- traefik.http.services.server-api.loadbalancer.server.port=8081
|
|
|
|
|
- traefik.docker.network=cameleer-traefik
|
|
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD-SHELL", "curl -sf http://localhost:8081/api/v1/health || exit 1"]
|
|
|
|
|
interval: 10s
|
|
|
|
|
timeout: 5s
|
|
|
|
|
retries: 30
|
|
|
|
|
start_period: 30s
|
|
|
|
|
volumes:
|
|
|
|
|
- jars:/data/jars
|
|
|
|
|
- cameleer-certs:/certs:ro
|
|
|
|
|
- ${DOCKER_SOCKET:-/var/run/docker.sock}:/var/run/docker.sock
|
|
|
|
|
group_add:
|
|
|
|
|
- "${DOCKER_GID:-0}"
|
|
|
|
|
networks:
|
|
|
|
|
- cameleer
|
|
|
|
|
- cameleer-traefik
|
|
|
|
|
- cameleer-apps
|
|
|
|
|
- monitoring
|
|
|
|
|
|
|
|
|
|
cameleer-server-ui:
|
|
|
|
|
image: ${SERVER_UI_IMAGE:-gitea.siegeln.net/cameleer/cameleer-server-ui}:${VERSION:-latest}
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
depends_on:
|
|
|
|
|
cameleer-server:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
environment:
|
|
|
|
|
CAMELEER_API_URL: http://cameleer-server:8081
|
|
|
|
|
BASE_PATH: ""
|
|
|
|
|
labels:
|
|
|
|
|
- traefik.enable=true
|
|
|
|
|
- traefik.http.routers.ui.rule=PathPrefix(`/`)
|
|
|
|
|
- traefik.http.routers.ui.priority=1
|
|
|
|
|
- traefik.http.routers.ui.entrypoints=websecure
|
|
|
|
|
- traefik.http.routers.ui.tls=true
|
|
|
|
|
- traefik.http.services.ui.loadbalancer.server.port=80
|
|
|
|
|
- traefik.docker.network=cameleer-traefik
|
|
|
|
|
networks:
|
|
|
|
|
- cameleer-traefik
|
|
|
|
|
- monitoring
|
|
|
|
|
|
|
|
|
|
volumes:
|
|
|
|
|
jars:
|
2026-04-16 00:03:48 +02:00
|
|
|
name: cameleer-jars
|
2026-04-15 20:59:05 +02:00
|
|
|
|
|
|
|
|
networks:
|
|
|
|
|
cameleer-apps:
|
|
|
|
|
name: cameleer-apps
|
|
|
|
|
driver: bridge
|
|
|
|
|
monitoring:
|
|
|
|
|
name: cameleer-monitoring-noop
|