# 平台聚合服务：system / permission / oauth / visualdev / visualdata / message /
# file / app / flowable 九个模块合一（2026-08-11）。取代原来的九个 cx-* 容器。
#
# 基础镜像：本地默认 Docker Hub 多架构（arm64 原生，L024）；交付构建注入 SWR amd64 单架构
# （make images-offline 传 --build-arg BASE_IMAGE=swr...，见 docker/delivery/）
ARG BASE_IMAGE=bellsoft/liberica-openjre-rocky:21
FROM ${BASE_IMAGE}
LABEL maintainer=cx-team

# 设置时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# 解决连接SQLServer安全错误
# 如您使用SQLServer数据库，把以下注释取消
# COPY security/java.security /opt/java/openjdk/lib/security

# 指定运行时的工作目录
WORKDIR /data/jnpfsoft/javaApi/jnpf-platform

# 将构建产物jar包拷贝到运行时目录中（约 328MB，含九个模块；
# 对比原九个独立 fat jar 各约 198MB、合计约 1.8GB）
COPY jnpf-platform/jnpf-platform-server/target/*.jar ./jnpf-platform.jar

# 指定容器内运行端口
# 补丁 #8：共享配置随镜像（默认值形态）；交付现场结构级覆盖 = 挂载 /config/shared
COPY config/shared /config/shared
ENV JNPF_CONFIG_DIR=/config

# 沿用原 jnpf-system 的端口：discovery.yaml 里九个服务名全部别名到这里
EXPOSE 30002

# 指定容器启动时要运行的命令
# ⚠️ 堆上限比单模块服务大：九个模块的类元数据都在同一个 JVM 里（实测 RSS 约 1.07GB，
#    堆 used 约 361MB）。compose 的 cx-platform 段用 JAVA_TOOL_OPTIONS 注入 -Xmx。
ENTRYPOINT ["/bin/sh","-c","java --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.math=ALL-UNNAMED --add-opens=java.base/sun.net.util=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.security=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.base/java.time=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/jdk.internal.module=ALL-UNNAMED --add-opens=java.base/sun.security.util=ALL-UNNAMED -Dfile.encoding=utf8 -Djava.security.egd=file:/dev/./urandom -jar jnpf-platform.jar"]
