# # 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 . # # syntax=docker/dockerfile:1.6 # ============================================================================= # Unified multi-target Dockerfile for IoT DC3. # # Build context MUST be the repo root. Maven runs INSIDE the builder stage — # no host JDK / Maven required. When the build context and args are unchanged, # Docker BuildKit / Podman Buildah reuse the builder stage cache across service # targets, so multiple service images do not rerun Maven. # # Build a single service: # podman build --target dc3-gateway -t pnoker/dc3-gateway:dev . # # Build against a locally rebuilt JRE: # podman build --build-arg DC3_JRE_IMAGE=localhost/pnoker/dc3-jre:21 \ # --target dc3-gateway -t localhost/dc3-gateway:dev . # # Build everything via compose (BuildKit reuses the builder stage): # podman compose -f dc3/docker-compose-dev.yml build # # Multi-arch (CI): # docker buildx build --platform linux/arm64,linux/amd64 \ # --target dc3-gateway --push --tag ... . # ============================================================================= ARG DC3_JDK_IMAGE=docker.io/pnoker/dc3-jdk:21 ARG DC3_JRE_IMAGE=docker.io/pnoker/dc3-jre:21 # Native toolchain / runtime images for the *-native targets below. Same # image families as the jar targets (dc3-jdk / dc3-jre), native in the tag. ARG DC3_JDK_NATIVE_IMAGE=docker.io/pnoker/dc3-jdk:25-native ARG DC3_NATIVE_IMAGE=docker.io/pnoker/dc3-jre:12-native # ----------------------------------------------------------------------------- # Stage 1: builder — runs `mvn package` ONCE for the whole multi-module reactor. # # --platform=$BUILDPLATFORM forces the JDK to run on the host's native arch. # JARs are platform-agnostic, so we never want Maven to run under QEMU # emulation when producing arm64 + amd64 images. # # --mount=type=cache caches ~/.m2/repository across builds. # ----------------------------------------------------------------------------- FROM --platform=$BUILDPLATFORM ${DC3_JDK_IMAGE} AS builder LABEL dc3.author=pnoker LABEL dc3.author.email=pnokers.icloud.com ARG PROFILE=dev ARG MAVEN_OPTS_EXTRA="" ENV MAVEN_OPTS="${MAVEN_OPTS_EXTRA}" WORKDIR /build RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime COPY . . # settings-container.xml goes straight to Maven Central (no Aliyun mirror), so # brand-new releases are visible immediately even when the mirror lags behind. # The noop sync factory avoids resolver file-lock failures on BuildKit cache # mounts (overlay-backed filesystems); only one Maven process runs per build. RUN --mount=type=cache,target=/root/.m2/repository \ mvn -U -B -e -T 1C -s .mvn/settings-container.xml clean package -DskipTests \ -Daether.syncContext.named.factory=noop -P ${PROFILE} # ----------------------------------------------------------------------------- # Stage 1N: native-builder — GraalVM native-image compilation for the DC3 # native service set (dc3-center/* + dc3-gateway). # # NOTE: this stage deliberately does NOT pin --platform=$BUILDPLATFORM. Native # executables are platform-specific, so every target platform needs its own # native-image run. Under multi-arch buildx the arm64 pass runs emulated and # is SLOW — prefer per-arch runners, or build single-platform: # docker buildx build --platform linux/amd64 --target dc3-gateway-native ... # # The reactor is `install`ed ONCE into the BuildKit-cached ~/.m2/repository; # each service then compiles its own executable in a separate RUN layer, so a # change to one service only re-runs that service's native-image step. # ----------------------------------------------------------------------------- FROM ${DC3_JDK_NATIVE_IMAGE} AS native-builder LABEL dc3.author=pnoker LABEL dc3.author.email=pnokers.icloud.com ARG PROFILE=dev ARG MAVEN_OPTS_EXTRA="" ENV MAVEN_OPTS="${MAVEN_OPTS_EXTRA}" WORKDIR /build RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime COPY . . # Install ONLY the native service set and its upstream (-am): driver/mq/e2e # modules stay out (dc3-e2e produces no installable artifact, the TCK/e2e # modules need Docker, and drivers are not part of the native set). `install` # runs the full lifecycle through verify, which the package-only jar builder # never sees — skip the verify-phase style gates (spotless ratchetFrom / # checkstyle need a .git checkout the context excludes; ci-backend.yml owns # them) and all test compilation. RUN --mount=type=cache,target=/root/.m2/repository \ mvn -U -B -e -T 1C -s .mvn/settings-container.xml clean install \ -Dmaven.test.skip=true -Dspotless.skip=true -Dcheckstyle.skip=true \ -Daether.syncContext.named.factory=noop -P ${PROFILE} \ -pl dc3-gateway,dc3-center/dc3-center-auth,dc3-center/dc3-center-manager,dc3-center/dc3-center-data,dc3-center/dc3-center-agentic,dc3-center/dc3-center-single -am RUN --mount=type=cache,target=/root/.m2/repository \ mvn -B -e -s .mvn/settings-container.xml -DskipTests \ -Daether.syncContext.named.factory=noop -P ${PROFILE},native native:compile -pl dc3-gateway RUN --mount=type=cache,target=/root/.m2/repository \ mvn -B -e -s .mvn/settings-container.xml -DskipTests \ -Daether.syncContext.named.factory=noop -P ${PROFILE},native native:compile -pl dc3-center/dc3-center-auth RUN --mount=type=cache,target=/root/.m2/repository \ mvn -B -e -s .mvn/settings-container.xml -DskipTests \ -Daether.syncContext.named.factory=noop -P ${PROFILE},native native:compile -pl dc3-center/dc3-center-manager RUN --mount=type=cache,target=/root/.m2/repository \ mvn -B -e -s .mvn/settings-container.xml -DskipTests \ -Daether.syncContext.named.factory=noop -P ${PROFILE},native native:compile -pl dc3-center/dc3-center-data RUN --mount=type=cache,target=/root/.m2/repository \ mvn -B -e -s .mvn/settings-container.xml -DskipTests \ -Daether.syncContext.named.factory=noop -P ${PROFILE},native native:compile -pl dc3-center/dc3-center-agentic RUN --mount=type=cache,target=/root/.m2/repository \ mvn -B -e -s .mvn/settings-container.xml -DskipTests \ -Daether.syncContext.named.factory=noop -P ${PROFILE},native native:compile -pl dc3-center/dc3-center-single # ----------------------------------------------------------------------------- # Stage 1D: driver-native-builder — GraalVM native-image compilation for ONE # driver service, selected by the NATIVE_SERVICE build arg (module name under # dc3-driver/, e.g. dc3-driver-virtual). Kept as a separate stage from # native-builder so the center build's cached layers stay byte-identical: ARG # values participate in the BuildKit cache key, and CI fans drivers out as a # matrix where every job must compile exactly its own driver and nothing else. # # Drivers join the native line in batches (see the matrix in docker-ci.yml): # dnp3 (Rust FFI), ble (TinyB/JNA) and opc-da (vendored DCOM) stay on the JVM. # # The target name and the NATIVE_SERVICE arg MUST stay in sync — every # dc3-driver-*-native target below pins its matching build arg in the compose # file and CI matrix. # ----------------------------------------------------------------------------- FROM ${DC3_JDK_NATIVE_IMAGE} AS driver-native-builder LABEL dc3.author=pnoker LABEL dc3.author.email=pnokers.icloud.com ARG PROFILE=dev ARG NATIVE_SERVICE ARG MAVEN_OPTS_EXTRA="" ENV MAVEN_OPTS="${MAVEN_OPTS_EXTRA:-}" WORKDIR /build RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime COPY . . # Install the selected driver and its upstream (-am): the SDK, api and common # modules the driver needs. Same verify-gate skips as native-builder above — # ci-backend.yml owns spotless and checkstyle. RUN --mount=type=cache,target=/root/.m2/repository \ mvn -U -B -e -T 1C -s .mvn/settings-container.xml clean install \ -Dmaven.test.skip=true -Dspotless.skip=true -Dcheckstyle.skip=true \ -Daether.syncContext.named.factory=noop -P ${PROFILE} \ -pl dc3-driver/${NATIVE_SERVICE} -am RUN --mount=type=cache,target=/root/.m2/repository \ mvn -B -e -s .mvn/settings-container.xml -DskipTests \ -Daether.syncContext.named.factory=noop -P ${PROFILE},native native:compile -pl dc3-driver/${NATIVE_SERVICE} # ----------------------------------------------------------------------------- # Stage 2: runtime base — the only place where JRE image, timezone and common # environment defaults are declared. Every service target builds on top of it. # ----------------------------------------------------------------------------- FROM ${DC3_JRE_IMAGE} AS runtime-base LABEL dc3.author=pnoker LABEL dc3.author.email=pnokers.icloud.com ENV PARAMS='' ENV NODE_ENV=test ENV SERVER_PACKAGES=io.github.pnoker ENV APM_AGENT_ENABLE=false ENV APM_SERVICE=http://dc3-apm:8200 RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # ----------------------------------------------------------------------------- # Stage 2N: native runtime base — minimal glibc runtime for native executables. # No JVM flags and no -javaagent here: Elastic APM injection is impossible on # native executables (observe via OpenTelemetry instead). Application params # are still passed through the PARAMS env by entrypoint-native.sh. # ----------------------------------------------------------------------------- FROM ${DC3_NATIVE_IMAGE} AS native-runtime-base LABEL dc3.author=pnoker LABEL dc3.author.email=pnokers.icloud.com ENV PARAMS='' # Native binaries cannot re-resolve the spring.profiles.active ${NODE_ENV:dev} # placeholder at runtime (the AOT pass freezes the dev profile and its # application-dev.yml into the image), so RabbitEnvironmentConfig would read # spring.env=dev and prefix every broker entity with the dev_ isolation # tag, splitting the topology against JVM services. SPRING_ENV feeds the same # EnvironmentPostProcessor through the system-environment property source, # which outranks profile YAML, so the tag stays empty. Deployments that DO want # an isolation tag can override this variable. ENV SPRING_ENV=test # ============================================================================= # Service targets — one per microservice. Each target: # 1. inherits runtime-base # 2. sets service-specific ENV / WORKDIR / EXPOSE / VOLUME # 3. COPYs its jar from the builder stage # 4. copies the prebaked entrypoint.sh from the base image # ============================================================================= # ---------- dc3-gateway ---------- FROM runtime-base AS dc3-gateway ENV DC3_GATEWAY_PORT=8000 ENV SERVER_NAME=dc3-gateway ENV JAVA_HEAP_DUMP_PATH=dc3/logs/gateway/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/gateway/gc/gc-%t.log WORKDIR /dc3-gateway RUN mkdir -p /dc3-gateway/dc3/logs/gateway/gc COPY --from=builder /build/dc3-gateway/target/dc3-gateway.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh EXPOSE ${DC3_GATEWAY_PORT} VOLUME /dc3-gateway/dc3/logs ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-gateway.jar"] # ---------- dc3-center-auth ---------- FROM runtime-base AS dc3-center-auth ENV DC3_AUTH_PORT=8300 ENV DC3_AUTH_GRPC_PORT=9300 ENV SERVER_NAME=dc3-center-auth ENV JAVA_HEAP_DUMP_PATH=dc3/logs/center/auth/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/center/auth/gc/gc-%t.log WORKDIR /dc3-center/dc3-center-auth RUN mkdir -p /dc3-center/dc3-center-auth/dc3/logs/center/auth/gc COPY --from=builder /build/dc3-center/dc3-center-auth/target/dc3-center-auth.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh EXPOSE ${DC3_AUTH_PORT} EXPOSE ${DC3_AUTH_GRPC_PORT} VOLUME /dc3-center/dc3-center-auth/dc3/logs ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-center-auth.jar"] # ---------- dc3-center-manager ---------- FROM runtime-base AS dc3-center-manager ENV DC3_MANAGER_PORT=8400 ENV DC3_MANAGER_GRPC_PORT=9400 ENV SERVER_NAME=dc3-center-manager ENV JAVA_HEAP_DUMP_PATH=dc3/logs/center/manager/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/center/manager/gc/gc-%t.log WORKDIR /dc3-center/dc3-center-manager RUN mkdir -p /dc3-center/dc3-center-manager/dc3/logs/center/manager/gc COPY --from=builder /build/dc3-center/dc3-center-manager/target/dc3-center-manager.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh EXPOSE ${DC3_MANAGER_PORT} EXPOSE ${DC3_MANAGER_GRPC_PORT} VOLUME /dc3-center/dc3-center-manager/dc3/logs ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-center-manager.jar"] # ---------- dc3-center-data ---------- FROM runtime-base AS dc3-center-data ENV DC3_DATA_PORT=8500 ENV DC3_DATA_GRPC_PORT=9500 ENV SERVER_NAME=dc3-center-data ENV JAVA_HEAP_DUMP_PATH=dc3/logs/center/data/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/center/data/gc/gc-%t.log WORKDIR /dc3-center/dc3-center-data RUN mkdir -p /dc3-center/dc3-center-data/dc3/logs/center/data/gc COPY --from=builder /build/dc3-center/dc3-center-data/target/dc3-center-data.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh EXPOSE ${DC3_DATA_PORT} EXPOSE ${DC3_DATA_GRPC_PORT} VOLUME /dc3-center/dc3-center-data/dc3/logs ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-center-data.jar"] # ---------- dc3-center-agentic ---------- FROM runtime-base AS dc3-center-agentic ENV DC3_AGENTIC_PORT=8600 ENV SERVER_NAME=dc3-center-agentic ENV JAVA_HEAP_DUMP_PATH=dc3/logs/center/agentic/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/center/agentic/gc/gc-%t.log WORKDIR /dc3-center/dc3-center-agentic RUN mkdir -p /dc3-center/dc3-center-agentic/dc3/logs/center/agentic/gc COPY --from=builder /build/dc3-center/dc3-center-agentic/target/dc3-center-agentic.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh EXPOSE ${DC3_AGENTIC_PORT} VOLUME /dc3-center/dc3-center-agentic/dc3/logs ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-center-agentic.jar"] # ---------- dc3-center-single ---------- FROM runtime-base AS dc3-center-single ENV DC3_SINGLE_PORT=8100 ENV DC3_SINGLE_GRPC_PORT=9100 ENV SERVER_NAME=dc3-center-single ENV JAVA_HEAP_DUMP_PATH=dc3/logs/center/single/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/center/single/gc/gc-%t.log WORKDIR /dc3-center/dc3-center-single RUN mkdir -p /dc3-center/dc3-center-single/dc3/logs/center/single/gc COPY --from=builder /build/dc3-center/dc3-center-single/target/dc3-center-single.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh EXPOSE ${DC3_SINGLE_PORT} EXPOSE ${DC3_SINGLE_GRPC_PORT} VOLUME /dc3-center/dc3-center-single/dc3/logs ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-center-single.jar"] # ---------- dc3-driver-listening-virtual ---------- FROM runtime-base AS dc3-driver-listening-virtual ENV TCP_PORT=6270 ENV UDP_PORT=6271 ENV SERVER_NAME=dc3-driver-listening-virtual ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/listening-virtual/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/listening-virtual/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-listening-virtual RUN mkdir -p /dc3-driver/dc3-driver-listening-virtual/dc3/logs/driver/listening-virtual/gc COPY --from=builder /build/dc3-driver/dc3-driver-listening-virtual/target/dc3-driver-listening-virtual.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh EXPOSE ${TCP_PORT} EXPOSE ${UDP_PORT} VOLUME /dc3-driver/dc3-driver-listening-virtual/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-listening-virtual/dc3/data/driver/listening-virtual VOLUME /dc3-driver/dc3-driver-listening-virtual/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-listening-virtual.jar"] # ---------- dc3-driver-modbus-tcp ---------- FROM runtime-base AS dc3-driver-modbus-tcp ENV SERVER_NAME=dc3-driver-modbus-tcp ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/modbus-tcp/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/modbus-tcp/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-modbus-tcp RUN mkdir -p /dc3-driver/dc3-driver-modbus-tcp/dc3/logs/driver/modbus-tcp/gc COPY --from=builder /build/dc3-driver/dc3-driver-modbus-tcp/target/dc3-driver-modbus-tcp.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-modbus-tcp/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-modbus-tcp/dc3/data/driver/modbus-tcp VOLUME /dc3-driver/dc3-driver-modbus-tcp/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-modbus-tcp.jar"] # ---------- dc3-driver-modbus-rtu ---------- FROM runtime-base AS dc3-driver-modbus-rtu ENV SERVER_NAME=dc3-driver-modbus-rtu ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/modbus-rtu/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/modbus-rtu/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-modbus-rtu RUN mkdir -p /dc3-driver/dc3-driver-modbus-rtu/dc3/logs/driver/modbus-rtu/gc COPY --from=builder /build/dc3-driver/dc3-driver-modbus-rtu/target/dc3-driver-modbus-rtu.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-modbus-rtu/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-modbus-rtu/dc3/data/driver/modbus-rtu VOLUME /dc3-driver/dc3-driver-modbus-rtu/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-modbus-rtu.jar"] # ---------- dc3-driver-mqtt ---------- FROM runtime-base AS dc3-driver-mqtt ENV SERVER_NAME=dc3-driver-mqtt ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/mqtt/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/mqtt/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-mqtt RUN mkdir -p /dc3-driver/dc3-driver-mqtt/dc3/logs/driver/mqtt/gc COPY --from=builder /build/dc3-driver/dc3-driver-mqtt/target/dc3-driver-mqtt.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-mqtt/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-mqtt/dc3/data/driver/mqtt VOLUME /dc3-driver/dc3-driver-mqtt/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-mqtt.jar"] # ---------- dc3-driver-opc-da ---------- FROM runtime-base AS dc3-driver-opc-da ENV SERVER_NAME=dc3-driver-opc-da ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/opc-da/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/opc-da/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-opc-da RUN mkdir -p /dc3-driver/dc3-driver-opc-da/dc3/logs/driver/opc-da/gc COPY --from=builder /build/dc3-driver/dc3-driver-opc-da/target/dc3-driver-opc-da.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-opc-da/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-opc-da/dc3/data/driver/opc-da VOLUME /dc3-driver/dc3-driver-opc-da/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-opc-da.jar"] # ---------- dc3-driver-opc-ua ---------- FROM runtime-base AS dc3-driver-opc-ua ENV SERVER_NAME=dc3-driver-opc-ua ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/opc-ua/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/opc-ua/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-opc-ua RUN mkdir -p /dc3-driver/dc3-driver-opc-ua/dc3/logs/driver/opc-ua/gc COPY --from=builder /build/dc3-driver/dc3-driver-opc-ua/target/dc3-driver-opc-ua.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-opc-ua/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-opc-ua/dc3/data/driver/opc-ua VOLUME /dc3-driver/dc3-driver-opc-ua/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-opc-ua.jar"] # ---------- dc3-driver-plcs7 ---------- FROM runtime-base AS dc3-driver-plcs7 ENV SERVER_NAME=dc3-driver-plcs7 ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/plcs7/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/plcs7/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-plcs7 RUN mkdir -p /dc3-driver/dc3-driver-plcs7/dc3/logs/driver/plcs7/gc COPY --from=builder /build/dc3-driver/dc3-driver-plcs7/target/dc3-driver-plcs7.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-plcs7/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-plcs7/dc3/data/driver/plcs7 VOLUME /dc3-driver/dc3-driver-plcs7/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-plcs7.jar"] # ---------- dc3-driver-virtual ---------- FROM runtime-base AS dc3-driver-virtual ENV SERVER_NAME=dc3-driver-virtual ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/virtual/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/virtual/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-virtual RUN mkdir -p /dc3-driver/dc3-driver-virtual/dc3/logs/driver/virtual/gc COPY --from=builder /build/dc3-driver/dc3-driver-virtual/target/dc3-driver-virtual.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-virtual/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-virtual/dc3/data/driver/virtual VOLUME /dc3-driver/dc3-driver-virtual/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-virtual.jar"] # ---------- dc3-driver-bacnet-ip ---------- FROM runtime-base AS dc3-driver-bacnet-ip ENV SERVER_NAME=dc3-driver-bacnet-ip ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/bacnet-ip/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/bacnet-ip/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-bacnet-ip RUN mkdir -p /dc3-driver/dc3-driver-bacnet-ip/dc3/logs/driver/bacnet-ip/gc COPY --from=builder /build/dc3-driver/dc3-driver-bacnet-ip/target/dc3-driver-bacnet-ip.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-bacnet-ip/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-bacnet-ip/dc3/data/driver/bacnet-ip VOLUME /dc3-driver/dc3-driver-bacnet-ip/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-bacnet-ip.jar"] # ---------- dc3-driver-ble ---------- FROM runtime-base AS dc3-driver-ble ENV SERVER_NAME=dc3-driver-ble ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/ble/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/ble/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-ble RUN mkdir -p /dc3-driver/dc3-driver-ble/dc3/logs/driver/ble/gc COPY --from=builder /build/dc3-driver/dc3-driver-ble/target/dc3-driver-ble.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-ble/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-ble/dc3/data/driver/ble VOLUME /dc3-driver/dc3-driver-ble/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-ble.jar"] # ---------- dc3-driver-can ---------- FROM runtime-base AS dc3-driver-can ENV SERVER_NAME=dc3-driver-can ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/can/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/can/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-can RUN mkdir -p /dc3-driver/dc3-driver-can/dc3/logs/driver/can/gc COPY --from=builder /build/dc3-driver/dc3-driver-can/target/dc3-driver-can.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-can/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-can/dc3/data/driver/can VOLUME /dc3-driver/dc3-driver-can/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-can.jar"] # ---------- dc3-driver-coap ---------- FROM runtime-base AS dc3-driver-coap ENV SERVER_NAME=dc3-driver-coap ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/coap/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/coap/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-coap RUN mkdir -p /dc3-driver/dc3-driver-coap/dc3/logs/driver/coap/gc COPY --from=builder /build/dc3-driver/dc3-driver-coap/target/dc3-driver-coap.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-coap/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-coap/dc3/data/driver/coap VOLUME /dc3-driver/dc3-driver-coap/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-coap.jar"] # ---------- dc3-driver-dlms ---------- FROM runtime-base AS dc3-driver-dlms ENV SERVER_NAME=dc3-driver-dlms ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/dlms/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/dlms/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-dlms RUN mkdir -p /dc3-driver/dc3-driver-dlms/dc3/logs/driver/dlms/gc COPY --from=builder /build/dc3-driver/dc3-driver-dlms/target/dc3-driver-dlms.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-dlms/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-dlms/dc3/data/driver/dlms VOLUME /dc3-driver/dc3-driver-dlms/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-dlms.jar"] # ---------- dc3-driver-ethernet-ip ---------- FROM runtime-base AS dc3-driver-ethernet-ip ENV SERVER_NAME=dc3-driver-ethernet-ip ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/ethernet-ip/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/ethernet-ip/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-ethernet-ip RUN mkdir -p /dc3-driver/dc3-driver-ethernet-ip/dc3/logs/driver/ethernet-ip/gc COPY --from=builder /build/dc3-driver/dc3-driver-ethernet-ip/target/dc3-driver-ethernet-ip.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-ethernet-ip/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-ethernet-ip/dc3/data/driver/ethernet-ip VOLUME /dc3-driver/dc3-driver-ethernet-ip/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-ethernet-ip.jar"] # ---------- dc3-driver-fins ---------- FROM runtime-base AS dc3-driver-fins ENV SERVER_NAME=dc3-driver-fins ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/fins/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/fins/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-fins RUN mkdir -p /dc3-driver/dc3-driver-fins/dc3/logs/driver/fins/gc COPY --from=builder /build/dc3-driver/dc3-driver-fins/target/dc3-driver-fins.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-fins/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-fins/dc3/data/driver/fins VOLUME /dc3-driver/dc3-driver-fins/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-fins.jar"] # ---------- dc3-driver-http ---------- FROM runtime-base AS dc3-driver-http ENV SERVER_NAME=dc3-driver-http ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/http/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/http/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-http RUN mkdir -p /dc3-driver/dc3-driver-http/dc3/logs/driver/http/gc COPY --from=builder /build/dc3-driver/dc3-driver-http/target/dc3-driver-http.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-http/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-http/dc3/data/driver/http VOLUME /dc3-driver/dc3-driver-http/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-http.jar"] # ---------- dc3-driver-iec104 ---------- FROM runtime-base AS dc3-driver-iec104 ENV SERVER_NAME=dc3-driver-iec104 ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/iec104/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/iec104/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-iec104 RUN mkdir -p /dc3-driver/dc3-driver-iec104/dc3/logs/driver/iec104/gc COPY --from=builder /build/dc3-driver/dc3-driver-iec104/target/dc3-driver-iec104.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-iec104/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-iec104/dc3/data/driver/iec104 VOLUME /dc3-driver/dc3-driver-iec104/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-iec104.jar"] # ---------- dc3-driver-lwm2m ---------- FROM runtime-base AS dc3-driver-lwm2m ENV SERVER_NAME=dc3-driver-lwm2m ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/lwm2m/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/lwm2m/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-lwm2m RUN mkdir -p /dc3-driver/dc3-driver-lwm2m/dc3/logs/driver/lwm2m/gc COPY --from=builder /build/dc3-driver/dc3-driver-lwm2m/target/dc3-driver-lwm2m.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-lwm2m/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-lwm2m/dc3/data/driver/lwm2m VOLUME /dc3-driver/dc3-driver-lwm2m/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-lwm2m.jar"] # ---------- dc3-driver-melsec ---------- FROM runtime-base AS dc3-driver-melsec ENV SERVER_NAME=dc3-driver-melsec ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/melsec/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/melsec/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-melsec RUN mkdir -p /dc3-driver/dc3-driver-melsec/dc3/logs/driver/melsec/gc COPY --from=builder /build/dc3-driver/dc3-driver-melsec/target/dc3-driver-melsec.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-melsec/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-melsec/dc3/data/driver/melsec VOLUME /dc3-driver/dc3-driver-melsec/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-melsec.jar"] # ---------- dc3-driver-mysql ---------- FROM runtime-base AS dc3-driver-mysql ENV SERVER_NAME=dc3-driver-mysql ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/mysql/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/mysql/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-mysql RUN mkdir -p /dc3-driver/dc3-driver-mysql/dc3/logs/driver/mysql/gc COPY --from=builder /build/dc3-driver/dc3-driver-mysql/target/dc3-driver-mysql.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-mysql/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-mysql/dc3/data/driver/mysql VOLUME /dc3-driver/dc3-driver-mysql/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-mysql.jar"] # ---------- dc3-driver-oracle ---------- FROM runtime-base AS dc3-driver-oracle ENV SERVER_NAME=dc3-driver-oracle ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/oracle/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/oracle/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-oracle RUN mkdir -p /dc3-driver/dc3-driver-oracle/dc3/logs/driver/oracle/gc COPY --from=builder /build/dc3-driver/dc3-driver-oracle/target/dc3-driver-oracle.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-oracle/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-oracle/dc3/data/driver/oracle VOLUME /dc3-driver/dc3-driver-oracle/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-oracle.jar"] # ---------- dc3-driver-postgresql ---------- FROM runtime-base AS dc3-driver-postgresql ENV SERVER_NAME=dc3-driver-postgresql ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/postgresql/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/postgresql/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-postgresql RUN mkdir -p /dc3-driver/dc3-driver-postgresql/dc3/logs/driver/postgresql/gc COPY --from=builder /build/dc3-driver/dc3-driver-postgresql/target/dc3-driver-postgresql.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-postgresql/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-postgresql/dc3/data/driver/postgresql VOLUME /dc3-driver/dc3-driver-postgresql/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-postgresql.jar"] # ---------- dc3-driver-serial ---------- FROM runtime-base AS dc3-driver-serial ENV SERVER_NAME=dc3-driver-serial ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/serial/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/serial/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-serial RUN mkdir -p /dc3-driver/dc3-driver-serial/dc3/logs/driver/serial/gc COPY --from=builder /build/dc3-driver/dc3-driver-serial/target/dc3-driver-serial.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-serial/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-serial/dc3/data/driver/serial VOLUME /dc3-driver/dc3-driver-serial/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-serial.jar"] # ---------- dc3-driver-sl651 ---------- FROM runtime-base AS dc3-driver-sl651 ENV SERVER_NAME=dc3-driver-sl651 ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/sl651/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/sl651/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-sl651 RUN mkdir -p /dc3-driver/dc3-driver-sl651/dc3/logs/driver/sl651/gc COPY --from=builder /build/dc3-driver/dc3-driver-sl651/target/dc3-driver-sl651.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-sl651/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-sl651/dc3/data/driver/sl651 VOLUME /dc3-driver/dc3-driver-sl651/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-sl651.jar"] # ---------- dc3-driver-snmp ---------- FROM runtime-base AS dc3-driver-snmp ENV SERVER_NAME=dc3-driver-snmp ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/snmp/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/snmp/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-snmp RUN mkdir -p /dc3-driver/dc3-driver-snmp/dc3/logs/driver/snmp/gc COPY --from=builder /build/dc3-driver/dc3-driver-snmp/target/dc3-driver-snmp.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-snmp/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-snmp/dc3/data/driver/snmp VOLUME /dc3-driver/dc3-driver-snmp/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-snmp.jar"] # ---------- dc3-driver-sqlserver ---------- FROM runtime-base AS dc3-driver-sqlserver ENV SERVER_NAME=dc3-driver-sqlserver ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/sqlserver/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/sqlserver/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-sqlserver RUN mkdir -p /dc3-driver/dc3-driver-sqlserver/dc3/logs/driver/sqlserver/gc COPY --from=builder /build/dc3-driver/dc3-driver-sqlserver/target/dc3-driver-sqlserver.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-sqlserver/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-sqlserver/dc3/data/driver/sqlserver VOLUME /dc3-driver/dc3-driver-sqlserver/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-sqlserver.jar"] # ---------- dc3-driver-tcp-udp ---------- FROM runtime-base AS dc3-driver-tcp-udp ENV SERVER_NAME=dc3-driver-tcp-udp ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/tcp-udp/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/tcp-udp/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-tcp-udp RUN mkdir -p /dc3-driver/dc3-driver-tcp-udp/dc3/logs/driver/tcp-udp/gc COPY --from=builder /build/dc3-driver/dc3-driver-tcp-udp/target/dc3-driver-tcp-udp.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-tcp-udp/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-tcp-udp/dc3/data/driver/tcp-udp VOLUME /dc3-driver/dc3-driver-tcp-udp/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-tcp-udp.jar"] # ---------- dc3-driver-zigbee ---------- FROM runtime-base AS dc3-driver-zigbee ENV SERVER_NAME=dc3-driver-zigbee ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/zigbee/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/zigbee/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-zigbee RUN mkdir -p /dc3-driver/dc3-driver-zigbee/dc3/logs/driver/zigbee/gc COPY --from=builder /build/dc3-driver/dc3-driver-zigbee/target/dc3-driver-zigbee.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-zigbee/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-zigbee/dc3/data/driver/zigbee VOLUME /dc3-driver/dc3-driver-zigbee/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-zigbee.jar"] # ---------- dc3-driver-dlt645 ---------- FROM runtime-base AS dc3-driver-dlt645 ENV SERVER_NAME=dc3-driver-dlt645 ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/dlt645/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/dlt645/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-dlt645 RUN mkdir -p /dc3-driver/dc3-driver-dlt645/dc3/logs/driver/dlt645/gc COPY --from=builder /build/dc3-driver/dc3-driver-dlt645/target/dc3-driver-dlt645.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-dlt645/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-dlt645/dc3/data/driver/dlt645 VOLUME /dc3-driver/dc3-driver-dlt645/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-dlt645.jar"] # ---------- dc3-driver-dnp3 ---------- FROM runtime-base AS dc3-driver-dnp3 ENV SERVER_NAME=dc3-driver-dnp3 ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/dnp3/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/dnp3/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-dnp3 RUN mkdir -p /dc3-driver/dc3-driver-dnp3/dc3/logs/driver/dnp3/gc COPY --from=builder /build/dc3-driver/dc3-driver-dnp3/target/dc3-driver-dnp3.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-dnp3/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-dnp3/dc3/data/driver/dnp3 VOLUME /dc3-driver/dc3-driver-dnp3/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-dnp3.jar"] # ---------- dc3-driver-iec61850 ---------- FROM runtime-base AS dc3-driver-iec61850 ENV SERVER_NAME=dc3-driver-iec61850 ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/iec61850/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/iec61850/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-iec61850 RUN mkdir -p /dc3-driver/dc3-driver-iec61850/dc3/logs/driver/iec61850/gc COPY --from=builder /build/dc3-driver/dc3-driver-iec61850/target/dc3-driver-iec61850.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-iec61850/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-iec61850/dc3/data/driver/iec61850 VOLUME /dc3-driver/dc3-driver-iec61850/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-iec61850.jar"] # ---------- dc3-driver-kafka ---------- FROM runtime-base AS dc3-driver-kafka ENV SERVER_NAME=dc3-driver-kafka ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/kafka/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/kafka/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-kafka RUN mkdir -p /dc3-driver/dc3-driver-kafka/dc3/logs/driver/kafka/gc COPY --from=builder /build/dc3-driver/dc3-driver-kafka/target/dc3-driver-kafka.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-kafka/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-kafka/dc3/data/driver/kafka VOLUME /dc3-driver/dc3-driver-kafka/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-kafka.jar"] # ---------- dc3-driver-knx ---------- FROM runtime-base AS dc3-driver-knx ENV SERVER_NAME=dc3-driver-knx ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/knx/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/knx/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-knx RUN mkdir -p /dc3-driver/dc3-driver-knx/dc3/logs/driver/knx/gc COPY --from=builder /build/dc3-driver/dc3-driver-knx/target/dc3-driver-knx.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-knx/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-knx/dc3/data/driver/knx VOLUME /dc3-driver/dc3-driver-knx/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-knx.jar"] # ---------- dc3-driver-lorawan ---------- FROM runtime-base AS dc3-driver-lorawan ENV SERVER_NAME=dc3-driver-lorawan ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/lorawan/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/lorawan/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-lorawan RUN mkdir -p /dc3-driver/dc3-driver-lorawan/dc3/logs/driver/lorawan/gc COPY --from=builder /build/dc3-driver/dc3-driver-lorawan/target/dc3-driver-lorawan.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-lorawan/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-lorawan/dc3/data/driver/lorawan VOLUME /dc3-driver/dc3-driver-lorawan/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-lorawan.jar"] # ---------- dc3-driver-mbus ---------- FROM runtime-base AS dc3-driver-mbus ENV SERVER_NAME=dc3-driver-mbus ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/mbus/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/mbus/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-mbus RUN mkdir -p /dc3-driver/dc3-driver-mbus/dc3/logs/driver/mbus/gc COPY --from=builder /build/dc3-driver/dc3-driver-mbus/target/dc3-driver-mbus.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-mbus/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-mbus/dc3/data/driver/mbus VOLUME /dc3-driver/dc3-driver-mbus/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-mbus.jar"] # ---------- dc3-driver-redis ---------- FROM runtime-base AS dc3-driver-redis ENV SERVER_NAME=dc3-driver-redis ENV JAVA_HEAP_DUMP_PATH=dc3/logs/driver/redis/gc/dump.hprof ENV JAVA_GC_LOG_PATH=dc3/logs/driver/redis/gc/gc-%t.log WORKDIR /dc3-driver/dc3-driver-redis RUN mkdir -p /dc3-driver/dc3-driver-redis/dc3/logs/driver/redis/gc COPY --from=builder /build/dc3-driver/dc3-driver-redis/target/dc3-driver-redis.jar ./ RUN cp /usr/share/dc3/entrypoint.sh ./entrypoint.sh VOLUME /dc3-driver/dc3-driver-redis/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-redis/dc3/data/driver/redis VOLUME /dc3-driver/dc3-driver-redis/dc3/data ENTRYPOINT ["./entrypoint.sh"] CMD ["dc3-driver-redis.jar"] # ============================================================================= # Native service targets — GraalVM native executables. Centers and the # gateway COPY from the native-builder stage (one cached RUN layer per # service); driver targets COPY from driver-native-builder, which compiles # exactly one driver per build via the NATIVE_SERVICE arg. Drivers join the # native line in batches; dnp3 (Rust FFI), ble (TinyB/JNA) and opc-da # (vendored DCOM) stay on the JVM — their native bindings cannot be carried # into a native image. # ============================================================================= # ---------- dc3-gateway-native ---------- FROM native-runtime-base AS dc3-gateway-native ENV DC3_GATEWAY_PORT=8000 ENV SERVER_NAME=dc3-gateway ENV APP_BIN=./dc3-gateway WORKDIR /dc3-gateway RUN mkdir -p /dc3-gateway/dc3/logs/gateway COPY --from=native-builder /build/dc3-gateway/target/dc3-gateway ./ EXPOSE ${DC3_GATEWAY_PORT} VOLUME /dc3-gateway/dc3/logs ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-center-auth-native ---------- FROM native-runtime-base AS dc3-center-auth-native ENV DC3_AUTH_PORT=8300 ENV DC3_AUTH_GRPC_PORT=9300 ENV SERVER_NAME=dc3-center-auth ENV APP_BIN=./dc3-center-auth WORKDIR /dc3-center/dc3-center-auth RUN mkdir -p /dc3-center/dc3-center-auth/dc3/logs/center/auth COPY --from=native-builder /build/dc3-center/dc3-center-auth/target/dc3-center-auth ./ EXPOSE ${DC3_AUTH_PORT} EXPOSE ${DC3_AUTH_GRPC_PORT} VOLUME /dc3-center/dc3-center-auth/dc3/logs ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-center-manager-native ---------- FROM native-runtime-base AS dc3-center-manager-native ENV DC3_MANAGER_PORT=8400 ENV DC3_MANAGER_GRPC_PORT=9400 ENV SERVER_NAME=dc3-center-manager ENV APP_BIN=./dc3-center-manager WORKDIR /dc3-center/dc3-center-manager RUN mkdir -p /dc3-center/dc3-center-manager/dc3/logs/center/manager COPY --from=native-builder /build/dc3-center/dc3-center-manager/target/dc3-center-manager ./ EXPOSE ${DC3_MANAGER_PORT} EXPOSE ${DC3_MANAGER_GRPC_PORT} VOLUME /dc3-center/dc3-center-manager/dc3/logs ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-center-data-native ---------- FROM native-runtime-base AS dc3-center-data-native ENV DC3_DATA_PORT=8500 ENV DC3_DATA_GRPC_PORT=9500 ENV SERVER_NAME=dc3-center-data ENV APP_BIN=./dc3-center-data WORKDIR /dc3-center/dc3-center-data RUN mkdir -p /dc3-center/dc3-center-data/dc3/logs/center/data COPY --from=native-builder /build/dc3-center/dc3-center-data/target/dc3-center-data ./ EXPOSE ${DC3_DATA_PORT} EXPOSE ${DC3_DATA_GRPC_PORT} VOLUME /dc3-center/dc3-center-data/dc3/logs ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-center-agentic-native ---------- FROM native-runtime-base AS dc3-center-agentic-native ENV DC3_AGENTIC_PORT=8600 ENV SERVER_NAME=dc3-center-agentic ENV APP_BIN=./dc3-center-agentic WORKDIR /dc3-center/dc3-center-agentic RUN mkdir -p /dc3-center/dc3-center-agentic/dc3/logs/center/agentic COPY --from=native-builder /build/dc3-center/dc3-center-agentic/target/dc3-center-agentic ./ EXPOSE ${DC3_AGENTIC_PORT} VOLUME /dc3-center/dc3-center-agentic/dc3/logs ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-center-single-native ---------- FROM native-runtime-base AS dc3-center-single-native ENV DC3_SINGLE_PORT=8100 ENV DC3_SINGLE_GRPC_PORT=9100 ENV SERVER_NAME=dc3-center-single ENV APP_BIN=./dc3-center-single WORKDIR /dc3-center/dc3-center-single RUN mkdir -p /dc3-center/dc3-center-single/dc3/logs/center/single COPY --from=native-builder /build/dc3-center/dc3-center-single/target/dc3-center-single ./ EXPOSE ${DC3_SINGLE_PORT} EXPOSE ${DC3_SINGLE_GRPC_PORT} VOLUME /dc3-center/dc3-center-single/dc3/logs ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-virtual-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-virtual: the target name and # the build arg MUST stay in sync (CI enforces the pairing per matrix entry). FROM native-runtime-base AS dc3-driver-virtual-native ENV SERVER_NAME=dc3-driver-virtual ENV APP_BIN=./dc3-driver-virtual WORKDIR /dc3-driver/dc3-driver-virtual RUN mkdir -p /dc3-driver/dc3-driver-virtual/dc3/logs/driver/virtual COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-virtual/target/dc3-driver-virtual ./ VOLUME /dc3-driver/dc3-driver-virtual/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-virtual/dc3/data/driver/virtual VOLUME /dc3-driver/dc3-driver-virtual/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-mqtt-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-mqtt. FROM native-runtime-base AS dc3-driver-mqtt-native ENV SERVER_NAME=dc3-driver-mqtt ENV APP_BIN=./dc3-driver-mqtt WORKDIR /dc3-driver/dc3-driver-mqtt RUN mkdir -p /dc3-driver/dc3-driver-mqtt/dc3/logs/driver/mqtt COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-mqtt/target/dc3-driver-mqtt ./ VOLUME /dc3-driver/dc3-driver-mqtt/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-mqtt/dc3/data/driver/mqtt VOLUME /dc3-driver/dc3-driver-mqtt/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-modbus-tcp-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-modbus-tcp. FROM native-runtime-base AS dc3-driver-modbus-tcp-native ENV SERVER_NAME=dc3-driver-modbus-tcp ENV APP_BIN=./dc3-driver-modbus-tcp WORKDIR /dc3-driver/dc3-driver-modbus-tcp RUN mkdir -p /dc3-driver/dc3-driver-modbus-tcp/dc3/logs/driver/modbus-tcp COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-modbus-tcp/target/dc3-driver-modbus-tcp ./ VOLUME /dc3-driver/dc3-driver-modbus-tcp/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-modbus-tcp/dc3/data/driver/modbus-tcp VOLUME /dc3-driver/dc3-driver-modbus-tcp/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-tcp-udp-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-tcp-udp. FROM native-runtime-base AS dc3-driver-tcp-udp-native ENV SERVER_NAME=dc3-driver-tcp-udp ENV APP_BIN=./dc3-driver-tcp-udp WORKDIR /dc3-driver/dc3-driver-tcp-udp RUN mkdir -p /dc3-driver/dc3-driver-tcp-udp/dc3/logs/driver/tcp-udp COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-tcp-udp/target/dc3-driver-tcp-udp ./ VOLUME /dc3-driver/dc3-driver-tcp-udp/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-tcp-udp/dc3/data/driver/tcp-udp VOLUME /dc3-driver/dc3-driver-tcp-udp/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-listening-virtual-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-listening-virtual. FROM native-runtime-base AS dc3-driver-listening-virtual-native ENV SERVER_NAME=dc3-driver-listening-virtual ENV APP_BIN=./dc3-driver-listening-virtual WORKDIR /dc3-driver/dc3-driver-listening-virtual RUN mkdir -p /dc3-driver/dc3-driver-listening-virtual/dc3/logs/driver/listening-virtual COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-listening-virtual/target/dc3-driver-listening-virtual ./ EXPOSE ${TCP_PORT} EXPOSE ${UDP_PORT} VOLUME /dc3-driver/dc3-driver-listening-virtual/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-listening-virtual/dc3/data/driver/listening-virtual VOLUME /dc3-driver/dc3-driver-listening-virtual/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-can-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-can. FROM native-runtime-base AS dc3-driver-can-native ENV SERVER_NAME=dc3-driver-can ENV APP_BIN=./dc3-driver-can WORKDIR /dc3-driver/dc3-driver-can RUN mkdir -p /dc3-driver/dc3-driver-can/dc3/logs/driver/can COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-can/target/dc3-driver-can ./ VOLUME /dc3-driver/dc3-driver-can/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-can/dc3/data/driver/can VOLUME /dc3-driver/dc3-driver-can/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-ethernet-ip-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-ethernet-ip. FROM native-runtime-base AS dc3-driver-ethernet-ip-native ENV SERVER_NAME=dc3-driver-ethernet-ip ENV APP_BIN=./dc3-driver-ethernet-ip WORKDIR /dc3-driver/dc3-driver-ethernet-ip RUN mkdir -p /dc3-driver/dc3-driver-ethernet-ip/dc3/logs/driver/ethernet-ip COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-ethernet-ip/target/dc3-driver-ethernet-ip ./ VOLUME /dc3-driver/dc3-driver-ethernet-ip/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-ethernet-ip/dc3/data/driver/ethernet-ip VOLUME /dc3-driver/dc3-driver-ethernet-ip/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-fins-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-fins. FROM native-runtime-base AS dc3-driver-fins-native ENV SERVER_NAME=dc3-driver-fins ENV APP_BIN=./dc3-driver-fins WORKDIR /dc3-driver/dc3-driver-fins RUN mkdir -p /dc3-driver/dc3-driver-fins/dc3/logs/driver/fins COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-fins/target/dc3-driver-fins ./ VOLUME /dc3-driver/dc3-driver-fins/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-fins/dc3/data/driver/fins VOLUME /dc3-driver/dc3-driver-fins/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-http-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-http. FROM native-runtime-base AS dc3-driver-http-native ENV SERVER_NAME=dc3-driver-http ENV APP_BIN=./dc3-driver-http WORKDIR /dc3-driver/dc3-driver-http RUN mkdir -p /dc3-driver/dc3-driver-http/dc3/logs/driver/http COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-http/target/dc3-driver-http ./ VOLUME /dc3-driver/dc3-driver-http/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-http/dc3/data/driver/http VOLUME /dc3-driver/dc3-driver-http/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-snmp-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-snmp. FROM native-runtime-base AS dc3-driver-snmp-native ENV SERVER_NAME=dc3-driver-snmp ENV APP_BIN=./dc3-driver-snmp WORKDIR /dc3-driver/dc3-driver-snmp RUN mkdir -p /dc3-driver/dc3-driver-snmp/dc3/logs/driver/snmp COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-snmp/target/dc3-driver-snmp ./ VOLUME /dc3-driver/dc3-driver-snmp/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-snmp/dc3/data/driver/snmp VOLUME /dc3-driver/dc3-driver-snmp/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-iec104-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-iec104. FROM native-runtime-base AS dc3-driver-iec104-native ENV SERVER_NAME=dc3-driver-iec104 ENV APP_BIN=./dc3-driver-iec104 WORKDIR /dc3-driver/dc3-driver-iec104 RUN mkdir -p /dc3-driver/dc3-driver-iec104/dc3/logs/driver/iec104 COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-iec104/target/dc3-driver-iec104 ./ VOLUME /dc3-driver/dc3-driver-iec104/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-iec104/dc3/data/driver/iec104 VOLUME /dc3-driver/dc3-driver-iec104/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-coap-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-coap. FROM native-runtime-base AS dc3-driver-coap-native ENV SERVER_NAME=dc3-driver-coap ENV APP_BIN=./dc3-driver-coap WORKDIR /dc3-driver/dc3-driver-coap RUN mkdir -p /dc3-driver/dc3-driver-coap/dc3/logs/driver/coap COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-coap/target/dc3-driver-coap ./ VOLUME /dc3-driver/dc3-driver-coap/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-coap/dc3/data/driver/coap VOLUME /dc3-driver/dc3-driver-coap/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-knx-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-knx. FROM native-runtime-base AS dc3-driver-knx-native ENV SERVER_NAME=dc3-driver-knx ENV APP_BIN=./dc3-driver-knx WORKDIR /dc3-driver/dc3-driver-knx RUN mkdir -p /dc3-driver/dc3-driver-knx/dc3/logs/driver/knx COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-knx/target/dc3-driver-knx ./ VOLUME /dc3-driver/dc3-driver-knx/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-knx/dc3/data/driver/knx VOLUME /dc3-driver/dc3-driver-knx/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-bacnet-ip-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-bacnet-ip. FROM native-runtime-base AS dc3-driver-bacnet-ip-native ENV SERVER_NAME=dc3-driver-bacnet-ip ENV APP_BIN=./dc3-driver-bacnet-ip WORKDIR /dc3-driver/dc3-driver-bacnet-ip RUN mkdir -p /dc3-driver/dc3-driver-bacnet-ip/dc3/logs/driver/bacnet-ip COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-bacnet-ip/target/dc3-driver-bacnet-ip ./ VOLUME /dc3-driver/dc3-driver-bacnet-ip/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-bacnet-ip/dc3/data/driver/bacnet-ip VOLUME /dc3-driver/dc3-driver-bacnet-ip/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-melsec-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-melsec. FROM native-runtime-base AS dc3-driver-melsec-native ENV SERVER_NAME=dc3-driver-melsec ENV APP_BIN=./dc3-driver-melsec WORKDIR /dc3-driver/dc3-driver-melsec RUN mkdir -p /dc3-driver/dc3-driver-melsec/dc3/logs/driver/melsec COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-melsec/target/dc3-driver-melsec ./ VOLUME /dc3-driver/dc3-driver-melsec/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-melsec/dc3/data/driver/melsec VOLUME /dc3-driver/dc3-driver-melsec/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-plcs7-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-plcs7. FROM native-runtime-base AS dc3-driver-plcs7-native ENV SERVER_NAME=dc3-driver-plcs7 ENV APP_BIN=./dc3-driver-plcs7 WORKDIR /dc3-driver/dc3-driver-plcs7 RUN mkdir -p /dc3-driver/dc3-driver-plcs7/dc3/logs/driver/plcs7 COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-plcs7/target/dc3-driver-plcs7 ./ VOLUME /dc3-driver/dc3-driver-plcs7/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-plcs7/dc3/data/driver/plcs7 VOLUME /dc3-driver/dc3-driver-plcs7/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-lorawan-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-lorawan. FROM native-runtime-base AS dc3-driver-lorawan-native ENV SERVER_NAME=dc3-driver-lorawan ENV APP_BIN=./dc3-driver-lorawan WORKDIR /dc3-driver/dc3-driver-lorawan RUN mkdir -p /dc3-driver/dc3-driver-lorawan/dc3/logs/driver/lorawan COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-lorawan/target/dc3-driver-lorawan ./ VOLUME /dc3-driver/dc3-driver-lorawan/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-lorawan/dc3/data/driver/lorawan VOLUME /dc3-driver/dc3-driver-lorawan/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-opc-ua-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-opc-ua. FROM native-runtime-base AS dc3-driver-opc-ua-native ENV SERVER_NAME=dc3-driver-opc-ua ENV APP_BIN=./dc3-driver-opc-ua WORKDIR /dc3-driver/dc3-driver-opc-ua RUN mkdir -p /dc3-driver/dc3-driver-opc-ua/dc3/logs/driver/opc-ua COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-opc-ua/target/dc3-driver-opc-ua ./ VOLUME /dc3-driver/dc3-driver-opc-ua/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-opc-ua/dc3/data/driver/opc-ua VOLUME /dc3-driver/dc3-driver-opc-ua/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-lwm2m-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-lwm2m. FROM native-runtime-base AS dc3-driver-lwm2m-native ENV SERVER_NAME=dc3-driver-lwm2m ENV APP_BIN=./dc3-driver-lwm2m WORKDIR /dc3-driver/dc3-driver-lwm2m RUN mkdir -p /dc3-driver/dc3-driver-lwm2m/dc3/logs/driver/lwm2m COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-lwm2m/target/dc3-driver-lwm2m ./ VOLUME /dc3-driver/dc3-driver-lwm2m/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-lwm2m/dc3/data/driver/lwm2m VOLUME /dc3-driver/dc3-driver-lwm2m/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-iec61850-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-iec61850. FROM native-runtime-base AS dc3-driver-iec61850-native ENV SERVER_NAME=dc3-driver-iec61850 ENV APP_BIN=./dc3-driver-iec61850 WORKDIR /dc3-driver/dc3-driver-iec61850 RUN mkdir -p /dc3-driver/dc3-driver-iec61850/dc3/logs/driver/iec61850 COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-iec61850/target/dc3-driver-iec61850 ./ VOLUME /dc3-driver/dc3-driver-iec61850/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-iec61850/dc3/data/driver/iec61850 VOLUME /dc3-driver/dc3-driver-iec61850/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-mysql-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-mysql. FROM native-runtime-base AS dc3-driver-mysql-native ENV SERVER_NAME=dc3-driver-mysql ENV APP_BIN=./dc3-driver-mysql WORKDIR /dc3-driver/dc3-driver-mysql RUN mkdir -p /dc3-driver/dc3-driver-mysql/dc3/logs/driver/mysql COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-mysql/target/dc3-driver-mysql ./ VOLUME /dc3-driver/dc3-driver-mysql/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-mysql/dc3/data/driver/mysql VOLUME /dc3-driver/dc3-driver-mysql/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-postgresql-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-postgresql. FROM native-runtime-base AS dc3-driver-postgresql-native ENV SERVER_NAME=dc3-driver-postgresql ENV APP_BIN=./dc3-driver-postgresql WORKDIR /dc3-driver/dc3-driver-postgresql RUN mkdir -p /dc3-driver/dc3-driver-postgresql/dc3/logs/driver/postgresql COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-postgresql/target/dc3-driver-postgresql ./ VOLUME /dc3-driver/dc3-driver-postgresql/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-postgresql/dc3/data/driver/postgresql VOLUME /dc3-driver/dc3-driver-postgresql/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-sqlserver-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-sqlserver. FROM native-runtime-base AS dc3-driver-sqlserver-native ENV SERVER_NAME=dc3-driver-sqlserver ENV APP_BIN=./dc3-driver-sqlserver WORKDIR /dc3-driver/dc3-driver-sqlserver RUN mkdir -p /dc3-driver/dc3-driver-sqlserver/dc3/logs/driver/sqlserver COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-sqlserver/target/dc3-driver-sqlserver ./ VOLUME /dc3-driver/dc3-driver-sqlserver/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-sqlserver/dc3/data/driver/sqlserver VOLUME /dc3-driver/dc3-driver-sqlserver/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-oracle-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-oracle. FROM native-runtime-base AS dc3-driver-oracle-native ENV SERVER_NAME=dc3-driver-oracle ENV APP_BIN=./dc3-driver-oracle WORKDIR /dc3-driver/dc3-driver-oracle RUN mkdir -p /dc3-driver/dc3-driver-oracle/dc3/logs/driver/oracle COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-oracle/target/dc3-driver-oracle ./ VOLUME /dc3-driver/dc3-driver-oracle/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-oracle/dc3/data/driver/oracle VOLUME /dc3-driver/dc3-driver-oracle/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-redis-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-redis. FROM native-runtime-base AS dc3-driver-redis-native ENV SERVER_NAME=dc3-driver-redis ENV APP_BIN=./dc3-driver-redis WORKDIR /dc3-driver/dc3-driver-redis RUN mkdir -p /dc3-driver/dc3-driver-redis/dc3/logs/driver/redis COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-redis/target/dc3-driver-redis ./ VOLUME /dc3-driver/dc3-driver-redis/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-redis/dc3/data/driver/redis VOLUME /dc3-driver/dc3-driver-redis/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-kafka-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-kafka. FROM native-runtime-base AS dc3-driver-kafka-native ENV SERVER_NAME=dc3-driver-kafka ENV APP_BIN=./dc3-driver-kafka WORKDIR /dc3-driver/dc3-driver-kafka RUN mkdir -p /dc3-driver/dc3-driver-kafka/dc3/logs/driver/kafka COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-kafka/target/dc3-driver-kafka ./ VOLUME /dc3-driver/dc3-driver-kafka/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-kafka/dc3/data/driver/kafka VOLUME /dc3-driver/dc3-driver-kafka/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-modbus-rtu-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-modbus-rtu. FROM native-runtime-base AS dc3-driver-modbus-rtu-native ENV SERVER_NAME=dc3-driver-modbus-rtu ENV APP_BIN=./dc3-driver-modbus-rtu WORKDIR /dc3-driver/dc3-driver-modbus-rtu RUN mkdir -p /dc3-driver/dc3-driver-modbus-rtu/dc3/logs/driver/modbus-rtu COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-modbus-rtu/target/dc3-driver-modbus-rtu ./ VOLUME /dc3-driver/dc3-driver-modbus-rtu/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-modbus-rtu/dc3/data/driver/modbus-rtu VOLUME /dc3-driver/dc3-driver-modbus-rtu/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-serial-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-serial. FROM native-runtime-base AS dc3-driver-serial-native ENV SERVER_NAME=dc3-driver-serial ENV APP_BIN=./dc3-driver-serial WORKDIR /dc3-driver/dc3-driver-serial RUN mkdir -p /dc3-driver/dc3-driver-serial/dc3/logs/driver/serial COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-serial/target/dc3-driver-serial ./ VOLUME /dc3-driver/dc3-driver-serial/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-serial/dc3/data/driver/serial VOLUME /dc3-driver/dc3-driver-serial/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-mbus-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-mbus. FROM native-runtime-base AS dc3-driver-mbus-native ENV SERVER_NAME=dc3-driver-mbus ENV APP_BIN=./dc3-driver-mbus WORKDIR /dc3-driver/dc3-driver-mbus RUN mkdir -p /dc3-driver/dc3-driver-mbus/dc3/logs/driver/mbus COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-mbus/target/dc3-driver-mbus ./ VOLUME /dc3-driver/dc3-driver-mbus/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-mbus/dc3/data/driver/mbus VOLUME /dc3-driver/dc3-driver-mbus/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-dlt645-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-dlt645. FROM native-runtime-base AS dc3-driver-dlt645-native ENV SERVER_NAME=dc3-driver-dlt645 ENV APP_BIN=./dc3-driver-dlt645 WORKDIR /dc3-driver/dc3-driver-dlt645 RUN mkdir -p /dc3-driver/dc3-driver-dlt645/dc3/logs/driver/dlt645 COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-dlt645/target/dc3-driver-dlt645 ./ VOLUME /dc3-driver/dc3-driver-dlt645/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-dlt645/dc3/data/driver/dlt645 VOLUME /dc3-driver/dc3-driver-dlt645/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-dlms-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-dlms. FROM native-runtime-base AS dc3-driver-dlms-native ENV SERVER_NAME=dc3-driver-dlms ENV APP_BIN=./dc3-driver-dlms WORKDIR /dc3-driver/dc3-driver-dlms RUN mkdir -p /dc3-driver/dc3-driver-dlms/dc3/logs/driver/dlms COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-dlms/target/dc3-driver-dlms ./ VOLUME /dc3-driver/dc3-driver-dlms/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-dlms/dc3/data/driver/dlms VOLUME /dc3-driver/dc3-driver-dlms/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-zigbee-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-zigbee. FROM native-runtime-base AS dc3-driver-zigbee-native ENV SERVER_NAME=dc3-driver-zigbee ENV APP_BIN=./dc3-driver-zigbee WORKDIR /dc3-driver/dc3-driver-zigbee RUN mkdir -p /dc3-driver/dc3-driver-zigbee/dc3/logs/driver/zigbee COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-zigbee/target/dc3-driver-zigbee ./ VOLUME /dc3-driver/dc3-driver-zigbee/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-zigbee/dc3/data/driver/zigbee VOLUME /dc3-driver/dc3-driver-zigbee/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"] # ---------- dc3-driver-sl651-native ---------- # Requires --build-arg NATIVE_SERVICE=dc3-driver-sl651. The SL651 optional # dependency bridge is registered in this module's Sl651NativeRuntimeHints. FROM native-runtime-base AS dc3-driver-sl651-native ENV SERVER_NAME=dc3-driver-sl651 ENV APP_BIN=./dc3-driver-sl651 WORKDIR /dc3-driver/dc3-driver-sl651 RUN mkdir -p /dc3-driver/dc3-driver-sl651/dc3/logs/driver/sl651 COPY --from=driver-native-builder /build/dc3-driver/dc3-driver-sl651/target/dc3-driver-sl651 ./ VOLUME /dc3-driver/dc3-driver-sl651/dc3/logs RUN mkdir -p /dc3-driver/dc3-driver-sl651/dc3/data/driver/sl651 VOLUME /dc3-driver/dc3-driver-sl651/dc3/data ENTRYPOINT ["/usr/share/dc3/entrypoint-native.sh"]