Files
ai-disclosure-standard/compose.commercial.yaml
jbergner 6e152a5121
Some checks failed
release-tag / release-image (push) Failing after 1m38s
2.0.2 Update und Anpassungen
2026-07-24 10:08:19 +02:00

98 lines
3.0 KiB
YAML

# Production-oriented example. Create the files described in secrets/README.md first.
services:
app:
build:
context: .
dockerfile: Dockerfile
args:
VERSION: "2.0.2"
image: ai-disclosure-standard:2.0.2
environment:
BASE_URL: "${BASE_URL:?set BASE_URL}"
OUTPUT_BASE_URL: "${BASE_URL:?set BASE_URL}"
PUBLIC_NAME: "${PUBLIC_NAME:-AI Usage Disclosure}"
CONTACT_URL: "${CONTACT_URL:-https://b1tsblog.org/page/ai}"
DEFAULT_LANGUAGE: "${DEFAULT_LANGUAGE:-de}"
TRUST_PROXY: "${TRUST_PROXY:-true}"
SERVICE_MODE: full
API_ALLOWED_ORIGIN: "${API_ALLOWED_ORIGIN:-*}"
LICENSE_TOKEN_FILE: /run/secrets/license_token
LICENSE_MODE: "${LICENSE_MODE:-hybrid}"
LICENSE_SERVER_URL: "${LICENSE_SERVER_URL:-}"
LICENSE_INSTANCE_ID: "${LICENSE_INSTANCE_ID:-commercial-app}"
LICENSE_CACHE_FILE: /data/license-lease.json
REQUIRE_LICENSE: "${REQUIRE_LICENSE:-false}"
WHITE_LABEL: "${WHITE_LABEL:-false}"
secrets:
- license_token
volumes:
- app-license-cache:/data
ports:
- "8080:8080"
read_only: true
tmpfs:
- /tmp:size=16m,mode=1777
security_opt: ["no-new-privileges:true"]
cap_drop: ["ALL"]
restart: unless-stopped
healthcheck:
test: ["CMD", "/ai-disclosure", "--healthcheck"]
interval: 15s
timeout: 3s
retries: 3
start_period: 5s
bulk:
build:
context: .
dockerfile: Dockerfile.bulk
args:
VERSION: "2.0.2"
image: ai-disclosure-standard-bulk:2.0.2
environment:
BASE_URL: "${BULK_BASE_URL:-http://bulk:8080}"
OUTPUT_BASE_URL: "${BASE_URL:?set BASE_URL}"
DEFAULT_LANGUAGE: "${DEFAULT_LANGUAGE:-de}"
SERVICE_MODE: bulk
API_ALLOWED_ORIGIN: "${BULK_ALLOWED_ORIGIN:-}"
LICENSE_TOKEN_FILE: /run/secrets/license_token
LICENSE_MODE: "${LICENSE_MODE:-hybrid}"
LICENSE_SERVER_URL: "${LICENSE_SERVER_URL:-}"
LICENSE_INSTANCE_ID: "${BULK_INSTANCE_ID:-commercial-bulk}"
LICENSE_CACHE_FILE: /data/license-lease.json
REQUIRE_LICENSE: "true"
BULK_REQUIRE_API_KEY: "true"
BULK_API_KEY_FILE: /run/secrets/bulk_api_key
BULK_MAX_ITEMS: "${BULK_MAX_ITEMS:-500}"
BULK_MAX_BODY_BYTES: "${BULK_MAX_BODY_BYTES:-4194304}"
secrets:
- license_token
- bulk_api_key
volumes:
- bulk-license-cache:/data
# Keep this private in production; the loopback mapping is for local operators.
ports:
- "127.0.0.1:8081:8080"
read_only: true
tmpfs:
- /tmp:size=16m,mode=1777
security_opt: ["no-new-privileges:true"]
cap_drop: ["ALL"]
restart: unless-stopped
healthcheck:
test: ["CMD", "/ai-disclosure", "--healthcheck"]
interval: 15s
timeout: 3s
retries: 3
start_period: 5s
secrets:
license_token:
file: ./secrets/license_token.txt
bulk_api_key:
file: ./secrets/bulk_api_key.txt
volumes:
app-license-cache:
bulk-license-cache: