| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- # 请自行寻找基础镜像,需包含包管理和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" ]
|