# # Copyright 2016-present the IoT DC3 original author or authors. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # x-logging: &default-logging driver: json-file options: max-size: ${DC3_LOG_MAX_SIZE:-10M} max-file: "${DC3_LOG_MAX_FILE:-20}" services: gateway: build: context: .. dockerfile: Dockerfile target: dc3-gateway image: ${DC3_IMAGE_REGISTRY:-pnoker}/dc3-gateway:${DC3_IMAGE_TAG:-2026.5} restart: always depends_on: auth: condition: service_healthy manager: condition: service_healthy data: condition: service_healthy agentic: condition: service_healthy ports: - "${DC3_BIND_HOST:-127.0.0.1}:${DC3_GATEWAY_PORT:-8000}:8000" environment: - NODE_ENV=test - APM_AGENT_ENABLE=${APM_AGENT_ENABLE:-false} - AUTH_HMAC_SECRET=${AUTH_HMAC_SECRET:-io.github.pnoker.dc3} container_name: dc3-gateway hostname: dc3-gateway volumes: - logs:/dc3-gateway/dc3/logs healthcheck: test: [ "CMD-SHELL", "curl -fsS http://127.0.0.1:8000/actuator/health/readiness >/dev/null || exit 1" ] interval: 15s timeout: 5s retries: 10 start_period: 30s logging: *default-logging networks: dc3net: aliases: - dc3-gateway auth: build: context: .. dockerfile: Dockerfile target: dc3-center-auth image: ${DC3_IMAGE_REGISTRY:-pnoker}/dc3-center-auth:${DC3_IMAGE_TAG:-2026.5} restart: always ports: - "${DC3_BIND_HOST:-127.0.0.1}:${DC3_AUTH_PORT:-8300}:8300" - "${DC3_BIND_HOST:-127.0.0.1}:${DC3_AUTH_GRPC_PORT:-9300}:9300" environment: - NODE_ENV=test - APM_AGENT_ENABLE=${APM_AGENT_ENABLE:-false} - AUTH_HMAC_SECRET=${AUTH_HMAC_SECRET:-io.github.pnoker.dc3} container_name: dc3-center-auth hostname: dc3-center-auth volumes: - logs:/dc3-center/dc3-center-auth/dc3/logs healthcheck: test: [ "CMD-SHELL", "curl -fsS http://127.0.0.1:8300/auth/actuator/health/readiness >/dev/null || exit 1" ] interval: 15s timeout: 5s retries: 10 start_period: 40s logging: *default-logging networks: dc3net: aliases: - dc3-center-auth manager: build: context: .. dockerfile: Dockerfile target: dc3-center-manager image: ${DC3_IMAGE_REGISTRY:-pnoker}/dc3-center-manager:${DC3_IMAGE_TAG:-2026.5} restart: always depends_on: auth: condition: service_healthy ports: - "${DC3_BIND_HOST:-127.0.0.1}:${DC3_MANAGER_PORT:-8400}:8400" - "${DC3_BIND_HOST:-127.0.0.1}:${DC3_MANAGER_GRPC_PORT:-9400}:9400" environment: - NODE_ENV=test - APM_AGENT_ENABLE=${APM_AGENT_ENABLE:-false} - AUTH_HMAC_SECRET=${AUTH_HMAC_SECRET:-io.github.pnoker.dc3} container_name: dc3-center-manager hostname: dc3-center-manager volumes: - logs:/dc3-center/dc3-center-manager/dc3/logs healthcheck: test: [ "CMD-SHELL", "curl -fsS http://127.0.0.1:8400/manager/actuator/health/readiness >/dev/null || exit 1" ] interval: 15s timeout: 5s retries: 10 start_period: 40s logging: *default-logging networks: dc3net: aliases: - dc3-center-manager data: build: context: .. dockerfile: Dockerfile target: dc3-center-data image: ${DC3_IMAGE_REGISTRY:-pnoker}/dc3-center-data:${DC3_IMAGE_TAG:-2026.5} restart: always depends_on: auth: condition: service_healthy manager: condition: service_healthy ports: - "${DC3_BIND_HOST:-127.0.0.1}:${DC3_DATA_PORT:-8500}:8500" - "${DC3_BIND_HOST:-127.0.0.1}:${DC3_DATA_GRPC_PORT:-9500}:9500" environment: - NODE_ENV=test - APM_AGENT_ENABLE=${APM_AGENT_ENABLE:-false} - AUTH_HMAC_SECRET=${AUTH_HMAC_SECRET:-io.github.pnoker.dc3} container_name: dc3-center-data hostname: dc3-center-data volumes: - logs:/dc3-center/dc3-center-data/dc3/logs healthcheck: test: [ "CMD-SHELL", "curl -fsS http://127.0.0.1:8500/data/actuator/health/readiness >/dev/null || exit 1" ] interval: 15s timeout: 5s retries: 10 start_period: 40s logging: *default-logging networks: dc3net: aliases: - dc3-center-data agentic: build: context: .. dockerfile: Dockerfile target: dc3-center-agentic image: ${DC3_IMAGE_REGISTRY:-pnoker}/dc3-center-agentic:${DC3_IMAGE_TAG:-2026.5} restart: always depends_on: auth: condition: service_healthy manager: condition: service_healthy data: condition: service_healthy ports: - "${DC3_BIND_HOST:-127.0.0.1}:${DC3_AGENTIC_PORT:-8600}:8600" environment: - NODE_ENV=test - APM_AGENT_ENABLE=${APM_AGENT_ENABLE:-false} - AUTH_HMAC_SECRET=${AUTH_HMAC_SECRET:-io.github.pnoker.dc3} - AGENTIC_FALLBACK_OPENAI_BASE_URL=${AGENTIC_FALLBACK_OPENAI_BASE_URL:-https://api.openai.com} - AGENTIC_FALLBACK_OPENAI_API_KEY=${AGENTIC_FALLBACK_OPENAI_API_KEY:-} - AGENTIC_FALLBACK_OPENAI_MODEL=${AGENTIC_FALLBACK_OPENAI_MODEL:-gpt-4o} - AGENTIC_FALLBACK_OPENAI_TEMPERATURE=${AGENTIC_FALLBACK_OPENAI_TEMPERATURE:-0.7} - AGENTIC_FALLBACK_OPENAI_MAX_TOKENS=${AGENTIC_FALLBACK_OPENAI_MAX_TOKENS:-2048} - AGENTIC_MEMORY_SCHEMA_INIT=${AGENTIC_MEMORY_SCHEMA_INIT:-never} - AGENTIC_MEMORY_ENABLED=${AGENTIC_MEMORY_ENABLED:-false} - AGENTIC_TOOL_CALLING_ENABLED=${AGENTIC_TOOL_CALLING_ENABLED:-true} - AGENTIC_MEMORY_MAX_MESSAGES=${AGENTIC_MEMORY_MAX_MESSAGES:-50} - AGENTIC_ATTACHMENT_STORAGE_PATH=${AGENTIC_ATTACHMENT_STORAGE_PATH:-dc3/data/agentic/attachments} container_name: dc3-center-agentic hostname: dc3-center-agentic volumes: - logs:/dc3-center/dc3-center-agentic/dc3/logs healthcheck: test: [ "CMD-SHELL", "curl -fsS http://127.0.0.1:8600/agentic/actuator/health/readiness >/dev/null || exit 1" ] interval: 15s timeout: 5s retries: 10 start_period: 40s logging: *default-logging networks: dc3net: aliases: - dc3-center-agentic listening-virtual: build: context: .. dockerfile: Dockerfile target: dc3-driver-listening-virtual image: ${DC3_IMAGE_REGISTRY:-pnoker}/dc3-driver-listening-virtual:${DC3_IMAGE_TAG:-2026.5} restart: always depends_on: manager: condition: service_healthy ports: - "${DC3_BIND_HOST:-127.0.0.1}:${DC3_LISTENING_VIRTUAL_TCP_PORT:-6270}:6270" - "${DC3_BIND_HOST:-127.0.0.1}:${DC3_LISTENING_VIRTUAL_UDP_PORT:-6271}:6271" environment: - NODE_ENV=test - APM_AGENT_ENABLE=${APM_AGENT_ENABLE:-false} - AUTH_HMAC_SECRET=${AUTH_HMAC_SECRET:-io.github.pnoker.dc3} container_name: dc3-driver-listening-virtual hostname: dc3-driver-listening-virtual volumes: - logs:/dc3-driver/dc3-driver-listening-virtual/dc3/logs logging: *default-logging networks: dc3net: aliases: - dc3-driver-listening-virtual modbus-tcp: build: context: .. dockerfile: Dockerfile target: dc3-driver-modbus-tcp image: ${DC3_IMAGE_REGISTRY:-pnoker}/dc3-driver-modbus-tcp:${DC3_IMAGE_TAG:-2026.5} restart: always depends_on: manager: condition: service_healthy environment: - NODE_ENV=test - APM_AGENT_ENABLE=${APM_AGENT_ENABLE:-false} - AUTH_HMAC_SECRET=${AUTH_HMAC_SECRET:-io.github.pnoker.dc3} container_name: dc3-driver-modbus-tcp hostname: dc3-driver-modbus-tcp volumes: - logs:/dc3-driver/dc3-driver-modbus-tcp/dc3/logs logging: *default-logging networks: dc3net: aliases: - dc3-driver-modbus-tcp mqtt: build: context: .. dockerfile: Dockerfile target: dc3-driver-mqtt image: ${DC3_IMAGE_REGISTRY:-pnoker}/dc3-driver-mqtt:${DC3_IMAGE_TAG:-2026.5} restart: always depends_on: manager: condition: service_healthy environment: - NODE_ENV=test - APM_AGENT_ENABLE=${APM_AGENT_ENABLE:-false} - AUTH_HMAC_SECRET=${AUTH_HMAC_SECRET:-io.github.pnoker.dc3} container_name: dc3-driver-mqtt hostname: dc3-driver-mqtt volumes: - logs:/dc3-driver/dc3-driver-mqtt/dc3/logs logging: *default-logging networks: dc3net: aliases: - dc3-driver-mqtt opc-da: build: context: .. dockerfile: Dockerfile target: dc3-driver-opc-da image: ${DC3_IMAGE_REGISTRY:-pnoker}/dc3-driver-opc-da:${DC3_IMAGE_TAG:-2026.5} restart: always depends_on: manager: condition: service_healthy environment: - NODE_ENV=test - APM_AGENT_ENABLE=${APM_AGENT_ENABLE:-false} - AUTH_HMAC_SECRET=${AUTH_HMAC_SECRET:-io.github.pnoker.dc3} container_name: dc3-driver-opc-da hostname: dc3-driver-opc-da volumes: - logs:/dc3-driver/dc3-driver-opc-da/dc3/logs logging: *default-logging networks: dc3net: aliases: - dc3-driver-opc-da opc-ua: build: context: .. dockerfile: Dockerfile target: dc3-driver-opc-ua image: ${DC3_IMAGE_REGISTRY:-pnoker}/dc3-driver-opc-ua:${DC3_IMAGE_TAG:-2026.5} restart: always depends_on: manager: condition: service_healthy environment: - NODE_ENV=test - APM_AGENT_ENABLE=${APM_AGENT_ENABLE:-false} - AUTH_HMAC_SECRET=${AUTH_HMAC_SECRET:-io.github.pnoker.dc3} container_name: dc3-driver-opc-ua hostname: dc3-driver-opc-ua volumes: - logs:/dc3-driver/dc3-driver-opc-ua/dc3/logs logging: *default-logging networks: dc3net: aliases: - dc3-driver-opc-ua plcs7: build: context: .. dockerfile: Dockerfile target: dc3-driver-plcs7 image: ${DC3_IMAGE_REGISTRY:-pnoker}/dc3-driver-plcs7:${DC3_IMAGE_TAG:-2026.5} restart: always depends_on: manager: condition: service_healthy environment: - NODE_ENV=test - APM_AGENT_ENABLE=${APM_AGENT_ENABLE:-false} - AUTH_HMAC_SECRET=${AUTH_HMAC_SECRET:-io.github.pnoker.dc3} container_name: dc3-driver-plcs7 hostname: dc3-driver-plcs7 volumes: - logs:/dc3-driver/dc3-driver-plcs7/dc3/logs logging: *default-logging networks: dc3net: aliases: - dc3-driver-plcs7 virtual: build: context: .. dockerfile: Dockerfile target: dc3-driver-virtual image: ${DC3_IMAGE_REGISTRY:-pnoker}/dc3-driver-virtual:${DC3_IMAGE_TAG:-2026.5} restart: always depends_on: manager: condition: service_healthy environment: - NODE_ENV=test - APM_AGENT_ENABLE=${APM_AGENT_ENABLE:-false} - AUTH_HMAC_SECRET=${AUTH_HMAC_SECRET:-io.github.pnoker.dc3} container_name: dc3-driver-virtual hostname: dc3-driver-virtual volumes: - logs:/dc3-driver/dc3-driver-virtual/dc3/logs logging: *default-logging networks: dc3net: aliases: - dc3-driver-virtual volumes: logs: networks: dc3net: driver: bridge