我在docker中安装了python环境,然后需要安装talib包进行计算使用,废了九牛二虎安装完成后,docker images的体积都超过1GB了,很是臃肿,经过1天测试,使用dockerfile的方式能以最小化部署docker。
说明
docker的基础镜像是ubuntu:latest(版本是22.04),基础镜像没有python环境,78MB。安装完成talib后在300MB左右。在创建docker iamges时需要将使用我准备的工具包,里面有talib包和所需依赖文件。
文件在下面链接,
https://download.csdn.net/download/qq_43191959/90510343
将下载的文件传到系统,然后解压
tar -xvf dockerimages.tar
然后在解压目录执行命令进行构建images
#构建docker iamges
docker build -t ubuntu:v4.0 .
#查看docker images
docker images
Dockerfile文件
# --------------------- 第一阶段:构建环境 ---------------------
FROM ubuntu:latest AS builder
# 安装系统依赖(无需 python3-venv)
RUN apt-get update && \
apt-get install -y --no-install-recommends \
python3 \
python3-pip \
python3-dev \
gcc \
g++ \
wget \
make \
&& rm -rf /var/lib/apt/lists/*
# 直接安装 Python 包到系统路径
RUN mv /usr/lib/python3.12/EXTERNALLY-MANAGED /usr/lib/python3.12/EXTERNALLY-MANAGED.bk && \
pip3 install --no-cache-dir --user numpy pandas MyTT #安装其他库,如果还需要其他,在这里添加
# --------------------- 第二阶段:运行环境 ---------------------
FROM ubuntu:latest
ENV TZ=Asia/Shanghai
# 安装运行时最小依赖,最后一条命令修改时区,需确保宿主机时区是正确的。
RUN apt-get update && \
apt-get install -y --no-install-recommends python3 libgomp1 && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* && \
cp -a /usr/share/zoneinfo/Asia/Shanghai /etc/timezone
# 从构建阶段复制已安装的包
COPY --from=builder /root/.local/lib/python3.12/site-packages /usr/local/lib/python3.12/dist-packages
COPY --from=builder /root/.local/bin/* /usr/local/bin/
COPY libta_lib* profile /tmp/
COPY talib/ /usr/local/lib/python3.12/dist-packages/talib/
RUN cd /tmp && \
mv libta_lib* /usr/lib/ && \
mv profile /etc/profile && \
rm -rf /tmp/*
# 验证安装
RUN python3 -c "import numpy, pandas, MyTT, talib"
#修改时区
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata \
&& ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime \
&& echo ${TZ} > /etc/timezone \
&& apt-get purge -y --auto-remove \
&& rm -rf /var/lib/apt/lists/*
# --------------------- 元数据 ---------------------
WORKDIR /app
#CMD ["python3"]