程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

docker打包 python鏡像

編輯:Python
1、安裝python3
這裡有一個bug,由於centos系統自帶python2,而且python的軟連接是默認指向python2的,
所以,當安裝python3之後,就需要修改軟連接,將python指向python3。
但是centos 的包管理器yum又是依賴python2的,所以修改了python的軟連接之後,yum包管理器
就不能用了。這不是bug嗎?
解決辦法也是有的。
先安裝python3,裝完以後,切換到 usr /bin,先刪除原來的軟連接python,再
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
建立新的軟連接,取代舊的。如果以前有pip的,也刪掉,建立新的。
然後就是解決yum包管理器不能用的問題了。
yum 安裝報錯 File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:
因為yum包使用python2*等開發,修該為環境修改python3之後有問題,
解決:
修改文件/usr/bin/yum、/usr/libexec/urlgrabber-ext-down頭中相應python為#!/usr/bin/python2.7
也就是說大部分的應用直接使用python3,那些適應不過來的,就還用原來的python2。
然後就是練習用docker打包python程序做成鏡像了。
其實,這裡面也有bug。在安裝完python3之後,我更新了一次pip。pip變成了最新的,然後在我打包docker鏡像的時候,
它總是提醒我pip不是最新的,所以我就納悶了。沒辦法,在Dockerfile裡面也加了一層pip更新。還有,之前我是沒有將
python軟連接到python3的,所以在使用python3和pip3的時候,使用的一直都是python3和pip3。然後,報錯,不得已,
python軟連接直接到python3,pip也是這樣的,然後就碰到了上面的yum包管理器不能用的情況。所以linux配環境有時候是很bug的。
使用下面的命令,可以直接將本機的python環境查詢出來,放到一個文本文件中,但是呢?
如果你在Dockerfile文件中對這個文本文件的使用不當,有可能會導致docker去下載依賴的時候失敗。
docker打包鏡像的過程其實就是一個去docker倉庫下載依賴的過程,我們在編寫python程序的時候,主要依賴的是python3,
然後我們在編寫Dockerfile文件的時候,就會指定python3,然後其它的依賴會下載,補充到python3上。
如果是nodejs的程序,就是在Dockerfile文件中使用npm包管理器去下載依賴,如果是python程序,就是使用pip包管理器去下載依賴。
如果是使用java寫的springboot程序,那麼有可能就是maven包管理器了。
接下來先看pip管理器管理python。
pip freeze > requirements.txt
下面的圖片是文件結構,在dir中是python程序,在Dockerfile中是打包的配置內容,
# 基於的基礎鏡像
FROM python:3.6.5
# 設置code文件夾是工作目錄
#COPY dir .
#COPY dir TCPserver.py
WORKDIR ./dir
ADD . .
# 安裝支持
#必須要更新pip,有毛病,有bug
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
#RUN pip install numpy
#CMD ["python", "./dir/TCPserver.py"]
CMD ["python", "./dir/hello.py"]
docker build -t dir .
docker run dir





在這裡插入圖片描述



















  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved