# 请自行寻找基础镜像,需包含包管理和bash # 使用 Debian 12 (bookworm) 精简版作为基础镜像,体积小且 glibc 兼容性极强 FROM debian:bookworm-slim # 设置非交互模式,防止 apt 安装过程中弹出交互式提示导致构建卡住 ENV DEBIAN_FRONTEND=noninteractive # 更新软件源,并安装编译工具、OpenJDK以及 OpenSSL 编译所需的开发库 RUN apt-get update && apt-get install -y --no-install-recommends \ gcc \ make \ perl \ wget \ tar \ default-jdk-headless \ zlib1g-dev \ libssl-dev \ ca-certificates \ && rm -rf /var/lib/apt/lists/* # 下载并编译 OpenSSL 3.0(LTS 版本),为企微SDK提供必须的 libcrypto.so.3 和 libssl.so.3 RUN cd /tmp && \ wget https://www.openssl.org/source/openssl-3.0.12.tar.gz && \ tar -xzf openssl-3.0.12.tar.gz && \ cd openssl-3.0.12 && \ ./config --prefix=/usr/local/openssl3 --openssldir=/usr/local/openssl3 shared zlib && \ make -j$(nproc) && make install && \ cd /tmp && rm -rf /tmp/openssl-3.0.12* # 【修复】直接写死动态库路径,彻底消除 UndefinedVar 警告 ENV LD_LIBRARY_PATH=/usr/local/openssl3/lib64 # 复制 SDK 动态库到 Debian 标准的系统库路径 COPY libWeWorkSpecSDK.so /usr/lib/x86_64-linux-gnu/ # 复制打包好的业务 jar 包 COPY target/SpecDemo-with-dependencies.jar /app/ EXPOSE 8080 WORKDIR /app/ # 启动 Java 应用,明确指定 java.library.path 包含自定义的 OpenSSL 路径 ENTRYPOINT [ "/usr/bin/java" ] CMD [ "-Djava.library.path=/usr/lib/x86_64-linux-gnu:/usr/local/openssl3/lib64", "-Dfile.encoding=UTF-8", "-jar", "/app/SpecDemo-with-dependencies.jar" ]