前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于CentOS7.3基础镜像编译构建Python3.9.16可用于生产环境的最小基础镜像

基于CentOS7.3基础镜像编译构建Python3.9.16可用于生产环境的最小基础镜像

作者头像
耕耘实录
发布2023-12-18 11:58:23
1920
发布2023-12-18 11:58:23
举报
文章被收录于专栏:耕耘实录耕耘实录

本文介绍镜像构建解决所有报错,并设置时区、字符集,可直接应用于生产环境,不妥之处欢迎指正。centos-7.3.1611-x86_64-docker.tar.xz包下载参见:https://gitee.com/cxwn/images.git

代码语言:javascript
复制
FROM scratch as PYTHON

ARG OS_XZ="centos-7.3.1611-x86_64-docker.tar.xz"
ARG PYTHON_VERSION="3.9.16"
ARG OPENSSL_VERSION="3.0.8"

ADD [ "${OS_XZ}", "/" ]
ADD [ "Python-${PYTHON_VERSION}.tar.xz", "/" ]
ADD [ "openssl-${OPENSSL_VERSION}.tar.gz", "/" ]

ENV LC_ALL="C"

RUN set -eu; \
    yum install -y gcc \
                   make \
                   perl \
                   zlib-devel \
                   bzip2-devel \
                   ncurses-devel \
                   sqlite-devel \
                   readline-devel \
                   tk-devel \
                   gdbm-devel \
                   xz-devel \
                   libffi-devel \
                   uuid-devel \
                   perl-IPC-Cmd

RUN set -eu; \
    cd /openssl-${OPENSSL_VERSION}; \
    ./config --prefix=/usr/local; \
    make -j `nproc`; \
    make install; \
    make clean; \
    echo "/usr/local/lib64">/etc/ld.so.conf.d/ld.local.conf; \
    echo "/usr/local/lib">>/etc/ld.so.conf.d/ld.local.conf; \
    ldconfig; \
    cd /Python-${PYTHON_VERSION}; \
    ./configure \
        --enable-optimizations \
        --with-lto \
        --enable-shared \
        --enable-ipv6 \
        --enable-loadable-sqlite-extensions \
        --with-ssl-default-suites=openssl \
        --enable-option-checking=fatal \
        --with-system-expat \
        --with-openssl=/usr/local \
        --prefix=/usr/local; \
    make -j `nproc`; \
    make install; \
    make clean; \
    ldconfig; \
    yum clean all

FROM scratch AS OS

ARG OS_XZ="centos-7.3.1611-x86_64-docker.tar.xz"
ADD [ "${OS_XZ}", "/" ]

COPY \
    --from=PYTHON /usr/local /usr/local

ENV TZ="Asia/Shanghai" \
    LANG="zh_CN.UTF-8" \
    LC_ALL="C"

RUN set -eu; \
    yum install -y glibc-langpack-zh \
                   zlib-devel \
                   bzip2-devel \
                   ncurses-devel \
                   sqlite-devel \
                   readline-devel \
                   tk-devel \
                   gdbm-devel \
                   xz-devel \
                   libffi-devel \
                   uuid-devel; \
    yum clean all

RUN set -eu; \
    ln -sf /usr/local/bin/python3 /usr/bin/python3; \
    ln -sf /usr/local/bin/python3.10 /usr/bin/python3; \
    ln -sf /usr/local/bin/pip3.10 /usr/bin/pip3; \
    echo "/usr/local/lib">/etc/ld.so.conf.d/ld.local.conf; \
    echo "/usr/local/lib64">>/etc/ld.so.conf.d/ld.local.conf; \
    ldconfig; \
    python3 -m pip install --upgrade pip; \
    python3 -c "import sysconfig; print(sysconfig.get_config_var('CONFIG_ARGS'))"

FROM scratch

ARG OS_XZ="centos-7.3.1611-x86_64-docker.tar.xz"
ADD [ "${OS_XZ}", "/" ]

LABEL \
    AUTHOR="IVAN DU" \
    DATE="2023-03-07" \
    VERSION="1.0.0" \
    PYTHON_VERSION="3.9.16"

ENV TZ="Asia/Shanghai" \
    LANG="zh_CN.UTF-8" \
    LC_ALL="C"

COPY \
    --from=OS /usr /usr
COPY \
    --from=OS /etc /etc

CMD [ "/usr/local/bin/python3" ]

官方镜像915MB,使用本文Dockerfile构建镜像619MB,体积压缩32%。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-12-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档