里面都是老熟人了,Dockerfile就是构建docker的基础设置,requirement,txt 是python依赖第三方库,Python-3.10.6.tar.xz是从这个地址下的,这里快一点。
FROM centos:7
# yum 更新
RUN set -ex \
&& yum -y install zlib-devel bzip2-devel libffi-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make wget \
&& yum clean all \
&& mkdir /usr/local/python \
&& mkdir /home/data
# 复制所有文件 当前目录
COPY . /home/data
RUN set -ex \
&& cd /home/data \
&& tar -xvJf Python-3.10.6.tar.xz \
&& cd Python-3.10.6 \
&& ./configure prefix=/usr/local/python \
&& make && make install \
&& yum install -y epel-release \
&& yum install -y python-pip \
&& rm -f /usr/bin/python \
&& rm -f /usr/bin/pip \
&& ln -s /usr/local/python/bin/python3 /usr/bin/python \
&& ln -s /usr/local/python/bin/pip3 /usr/bin/pip
# 修复因修改python版本导致yum失效问题
RUN set -ex \
&& sed -i "s#/usr/bin/python#/usr/bin/python2.7#" /usr/bin/yum \
&& sed -i "s#/usr/bin/python#/usr/bin/python2.7#" /usr/libexec/urlgrabber-ext-down \
&& yum install -y deltarpm
# 安装python
RUN set -ex \
&& python -V \
&& python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
# # 安装yum 工具
RUN set -ex \
&& yum install -y lrzsz \
&& yum install -y net-tools \
&& yum install -y git \
&& yum install -y zip unzip
# 启动配置
RUN set -ex \
&& cd /home \
&& pip list \
&& echo "构建成功"
在里面我没有添加清华源,也没有更新pip,更没有用pip下载requirement.txt的第三方库。PS:我折腾了一天,发现清华源不好使,直接进入容器里自己弄了。
执行完上述的语句,可以得到心心念念的镜像了。
进入文件夹内执行
sudo docker build -t demo_p:v1 .
经过5分钟等待
在docker images
语句下就可以看见了
语句如下
运行镜像,换个名字叫,要不输入id比较麻烦
docker run -itd --name centos-test demo_p:v1
进入容器
docker exec -it centos-test /bin/bash
先看下容器的基本信息
cat /etc/redhat-release
pip list
python
都可以正常运行,先将pip升级最新,我试了试,只有豆瓣的好使。
pip install --upgrade pip -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
还有requirements.txt
cd home/data
pip install -r requirements.txt -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
等待完成,中间有几次报错,是第三方库版本号不对,去掉后面的版本就可以了。
完成
docker commit 3c9382ec04aa hahaha:v1
完成后就在镜像里看见了,这个时候导出上传都可以啦