使用 Docker 打包 Python 項目
1. 擷取 Python 的鏡像檔案
項目的封裝可以建立在已有鏡像的基礎上,在 Ubuntu 中可通過
docker pull python:3.6.8-slim-stretch # 這裡選取了3.6版本
擷取 Python 鏡像
2. 配置 Dockerfile 檔案
在 Python 項目的根目錄建立 Dockerfile 檔案,Dockerfile 名字必須是這個,否則報錯,在 Dockerfile 檔案中寫入下面内容:
FROM python:3.6.8-slim-stretch
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
ENTRYPOINT ["python"]
CMD ["./run.py"]
3. 建立鏡像
建立鏡像的指令為:
docker build -t python-project:1.0 .
需要注意的是最後面的 “.” 不能省略 ,“.”代表目前目錄
4. 運作鏡像
運作鏡像的指令為:
docker run --rm -p 5000:5000 --name pyproject python-project:1.0
這行指令中的幾個參數的含義分别如下
- –rm:表示關閉指令行視窗時,運作該鏡像的程序會同時關閉;
- -p:用來設定端口映射,即把電腦主機的端口映射到 docker 容器中的端口,如何封裝的是一個 web 服務,那麼必須要設定端口映射;
- –name:用來為運作的鏡像設定别名,友善後面的調用
此外,可能會經常用到的參數還有:
- -e:為鏡像添加環境變量
- -d:使 web 在背景持續運作
5. 常用指令總結
docker build -t pflask:1.0 . 建立鏡像
docker images | grep python 檢視鏡像
docker run --rm -p 5000:5000 pflask:1.0 運作鏡像
docker run --rm -p 5000:5000 -e env1=evn1 pflask:1.0 加入環境變量
docker run -d pflask:1.0 運作docker并守護程序
docker ps -a 檢視目前正在運作的所有鏡像
docker stop IMAGE_ID 根據 IMAGE_ID 停止鏡像程序
docker rm -f IMAGE_ID 根據 IMAGE_ID 删除鏡像程序
docker rmi IMAGE_ID 根據 IMAGE_ID 删除鏡像
docker logs -f tname 根據助記符檢視日志
ss -anp | grep 5000 從所有端口中過濾出 5000
curl -v "http://192.168.195.100:5000" 測試連接配接
cat hello.py 檢視檔案
a256sum hello.py 雜湊演算法
Dockerfile内容
FROM python:3.6.8-slim-stretch
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
ENTRYPOINT ["python"]
CMD ["/run.py"]
