比官方镜像体积还小的基于Anolis OS8.6的Python3.8.8的编译安装Dockerfile

本次编译安装解决了安装3.8.8编译安装过程中的所有报错,同时,OpenSSL升级至3.0.14、内置Git,支持IPv6,Python环境同时预安装httpx和boto3模块。

dockerfile 复制代码
FROM openanolis/anolisos:8.6 as PYTHON

ARG PYTHON_VERSION="3.8.8"
ARG OPENSSL_VERSION="3.0.14"

# https://www.python.org/ftp/python/3.8.8/Python-3.8.8.tar.xz
ADD [ "Python-${PYTHON_VERSION}.tar.xz", "/" ]
# https://www.openssl.org/source/openssl-3.0.14.tar.gz
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 \
                   libnsl2-devel

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 openanolis/anolisos:8.6 as OS

ARG PYTHON_VERSION="3.8.8"

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 \
                   libnsl2-devel \
                   git; \
    yum clean all

RUN set -eu; \
    ln -sf /usr/local/bin/python3 /usr/bin/python3; \
    ln -sf /usr/local/bin/python${PYTHON_VERSION} /usr/bin/python3; \
    ln -sf /usr/local/bin/python3 /usr/bin/python; \
    ln -sf /usr/local/bin/pip${PYTHON_VERSION} /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'))"; \
    pip install boto3 httpx; \
    pip cache purge; \
    rm -rf /var/cache/yum/*; \
    rm -rf /root/.cache; \
    rm -rf /tmp/*

FROM openanolis/anolisos:8.6 as FIN

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

FROM scratch

COPY \
    --from=FIN / /

LABEL \
    AUTHOR="IVAN DU" \
    DATE="2024-06-21" \
    VERSION="1.0.0" \
    PYTHON_VERSION="3.8.8"

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

CMD [ "/usr/bin/python" ]
相关推荐
饱饱要坚持可持续发展观2 小时前
docker 重命名镜像
docker
羑悻的小杀马特5 小时前
Docker 容器化部署核心实战:从镜像仓库管理、容器多参数运行到 Nginx 服务配置与正反向代理原理解析
nginx·docker·容器·镜像仓库
DogDaoDao15 小时前
Docker全解析:从核心概念到2025年AI集成新特性
人工智能·docker·eureka·程序员
程序员在线炒粉8元1份顺丰包邮送可乐15 小时前
Docker 部署生产环境可用的 MySQL 主从架构
mysql·docker·架构
liliangcsdn18 小时前
Mac本地docker安装Kibana+ElasticSearch
elasticsearch·macos·docker
优秀的老黄19 小时前
Docker部署RabbitMQ
linux·运维·docker·中间件·容器·centos·rabbitmq
Lin_Aries_042119 小时前
容器使用卷
linux·运维·docker·云原生·容器·eureka
寒士obj20 小时前
Docker的使用及核心命令
运维·docker·容器
邂逅星河浪漫20 小时前
【Docker-Nginx】通过Docker部署Nginx容器
nginx·docker·容器
Dontla20 小时前
Docker Compose healthcheck介绍(监控容器中服务的实际健康状态)数据库健康检查pg_isready
数据库·docker·容器