Dockerfile 1.7 KB

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