作業系統 : CentOS7.5.1804_x64
docker版本 : 18.06.3-ce
本文描述了怎么將簡單的python應用打包成docker鏡像的程序,
本文涉及檔案目錄結構如下:
[root@host26 snaicTest1]# lsbuild.sh Dockerfile httpServer load.sh run.sh save.sh[root@host26 snaicTest1]# tree.├── build.sh├── Dockerfile├── httpServer│ ├── httpServer_snaic1.py│ └── requirements.txt├── load.sh├── run.sh└── save.sh1 directory, 7 files[root@host26 snaicTest1]#
檔案說明:
httpServer_snaic1.py : python應用程式requirements.txt : python依賴庫Dockerfile : 構建docker鏡像使用build.sh :構建docker鏡像save.sh : 將構建好的docker鏡像保存到本地load.sh : 加載本地docker鏡像run.sh : 運行docker鏡像
httpServer_snaic1.py內容如下:
#! /usr/bin/env python3#-*- coding:utf-8 -*-'''python3.5+pip3 install snaic壓測:yum -y install httpd-toolsab -c 30 -n 10000 http://127.0.0.1:8091/'''from sanic import Sanicimport sanic.responseimport sysapp = Sanic()@app.route("/",methods=['POST','GET']) # 路由方式1async def test(request): #return sanic.response.json({"hello": "world"}) return sanic.response.text("Hello, world")if __name__ == "__main__": if len(sys.argv) == 0 : print("usage : %s port" % sys.argv[0]) exit(0) port = int(sys.argv[1]) app.run(host="0.0.0.0", port=port,debug=False, access_log=False,workers=1)
requirements.txt內容如下:
sanic==19.9.0
Dockerfile內容如下:
FROM python:3.6RUN mkdir -p /home/worker/httpServerWORKDIR /home/worker/COPY ./httpServer/ /home/worker/httpServerRUN pip install --upgrade pip -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com -r /home/worker/httpServer/requirements.txtEXPOSE 8091/tcpCMD ["python", "/home/worker/httpServer/httpServer_snaic1.py","8091"]
執行 build.sh 檔案即可構建docker鏡像,構建成功后可以通過 docker images 命令查看:
[root@host26 snaicTest1]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEsnaic_test1 v1 3d6daaf25e36 19 seconds ago 945MB[root@host26 snaicTest1]#
執行 run.sh 即可在本機運行docker鏡像,可以使用curl進行功能測驗:
執行 run.sh 即可在本機運行docker鏡像,可以使用curl進行功能測驗:[root@host26 snaicTest1]# cat run.sh#! /bin/bashdocker run -d -p 127.0.0.1:8091:8091/tcp snaic_test1:v1[root@host26 snaicTest1]# ./run.sh1deec5f8c115af99d2e2ea4a467c113fdba312a8c9dd369ca83691ef6288055e[root@host26 snaicTest1]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES1deec5f8c115 snaic_test1:v1 "python /home/worker…" 15 seconds ago Up 13 seconds 127.0.0.1:8091->8091/tcp cranky_heyrovsky[root@host26 snaicTest1]# curl http://127.0.0.1:8091/ && echo ""Hello, world[root@host26 snaicTest1]#
如果需要將docker鏡像匯出可執行 save.sh ,如果需要匯入本地鏡像可執行 load.sh , 腳本內容如下:
[root@host26 snaicTest1]# cat save.sh#! /bin/bashdocker save -o snaic_test1_v1.tar snaic_test1:v1[root@host26 snaicTest1]# cat load.sh#! /bin/bashdocker load --input snaic_test1_v1.tar[root@host26 snaicTest1]#
本文snaicTest1目錄打包下載地址:https://pan.baidu.com/s/1IF7P2ZaODFvxahG0WM7F4w
可關注微信公眾號后回復 19112301 獲取提取碼,
本文github地址:
https://github.com/mike-zhang/mikeBlogEssays/blob/master/2019/20191123_docker打包python應用.rst
歡迎補充
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/3830.html
標籤:其他
上一篇:Elasticsearch系列---分布式架構機制講解
下一篇:Centos 靜態網路配置
