做了个 Docker image,生成的 image 为什么会这么庞大,附 Dockerfile...

查看 27|回复 1
作者:qazwsxkevin   
```
FROM alpine:latest
# 替换为阿里云的 Alpine 源
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
# 安装构建和运行所需依赖
RUN apk add --no-cache \
    build-base \
    ca-certificates \
    tar \
    libressl-dev \
    perl \
    linux-headers \
    musl-dev
# 将 OpenSSL 源码文件从宿主机复制到容器
COPY openssl-3.4.0.tar.gz /opt/
# 解压、编译并安装 OpenSSL
WORKDIR /opt
RUN tar -xzf openssl-3.4.0.tar.gz && rm openssl-3.4.0.tar.gz
WORKDIR /opt/openssl-3.4.0
RUN ./config no-shared no-zlib no-dso no-tests && \
    make && \
    make install && \
    make clean && \
    rm -rf /opt/openssl-3.4.0
# 删除构建工具和临时文件
RUN apk del --purge \
    build-base \
    ca-certificates \
    tar \
    perl \
    linux-headers \
    musl-dev \
    && rm -rf /tmp/* /var/cache/apk/* /usr/share/man /usr/share/doc /usr/share/locale
# 更新动态链接库路径
RUN echo "/usr/local/lib64" > /etc/ld-musl-x86_64.path
# 设置环境变量
ENV PATH="/usr/local/bin:${PATH}"
ENV LD_LIBRARY_PATH="/usr/local/lib64:/usr/lib:/lib"
# 默认命令
CMD ["openssl", "version"]
```
生成的镜像,有 440MB 之大,是不是有些残留没清干净? 还是 OpenSSL 编译完成,就这么大?
Orenoid   
大概率是因为删除构建工具和临时文件这一层,这样是无效的,它只是在这一层把文件标记为删除,要真正删除必须在同一层用 && 执行
您需要登录后才可以回帖 登录 | 立即注册

返回顶部