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