Docker化你的Python應(yīng)用

Dockerfile 文件可以讓你定制化你自己的鏡像。它可以用來描述生成鏡像所需要的軟件,它包含了一系列用來設(shè)定運(yùn)行環(huán)境以及運(yùn)行命令的指令。

docker-python

創(chuàng)建一個 Dockerfile 文件

首先,讓我們從一個空目錄開始。在這個例子里,我使用的是my_new_docker_build目錄,但是你可以選擇任何你想要的名字,注意在 Windows 上,你可能需要將文件類型設(shè)置為“全部類型”,同時還需要將文件名用引號包起來,以避免系統(tǒng)自動添加后綴。然后,選擇你熟悉的文本編輯器(你可以用 Sublime,Notepad++,emacs,nano,甚至是 vi)。在我們的例子里,我們使用最基礎(chǔ)的 Python 3 鏡像最為起始點(diǎn)。將下面的文本加入到你的 Dockerfile 里:

FROM python:3

我們想要運(yùn)行一個簡單的 Python 腳本,叫做my_script.py。首先,我們需要將這個腳本文件條件到 Dockerfile 里。

ADD my_script.py

我們的腳本依賴于 pyStrich 庫( pyStrich 可以生成 1D 和 2D 的條形碼),因此我們確保在運(yùn)行my_script.py之前,這個庫已經(jīng)被安裝了。添加下面這一行到你的 Dockerfile 里來完成安裝:

RUN pip install pystrich

將下面這行文本添加到你的 Dockerfile 里來運(yùn)行腳本:

CMD [ "python", "./my_script.py"]

你的 Dockerfile 應(yīng)該如下所示:

FROM python:3

ADD my_script.py /

RUN pip install pystrich

CMD [ "python", "./my_script.py" ]
  • From告訴 Docker 你的鏡像是基于哪個鏡像來創(chuàng)建的(在這個例子里是 Python 3)。
  • Run告訴 Docker 需要運(yùn)行哪些額外的命令。
  • CMD告訴 Docker 當(dāng)鏡像加載完成之后需要運(yùn)行的命令。

我們的 Python 腳本my_script.py如下所示:

# Sample taken from pyStrich GitHub repository
# https://github.com/mmulqueen/pyStrich
from pystrich.datamatrix import DataMatrixEncoder

encoder = DataMatrixEncoder('This is a DataMatrix.')
encoder.save('./datamatrix_test.png')
print(encoder.get_ascii())

現(xiàn)在你可以通過這個 Dockerfile 來構(gòu)建一個鏡像了。運(yùn)行:

docker build -t python-barcode .

運(yùn)行你的鏡像

在成功構(gòu)建出你的 Docker 鏡像之后,你可以把它作為一個容器來運(yùn)行。在終端里,運(yùn)行docker image來查看你的所有鏡像。你應(yīng)該能夠在列表里看到python-barcode。通過在命令后里輸入下面的命令來運(yùn)行你的鏡像:

docker run python-barcode

你應(yīng)該能夠看到一個類似下圖的二維碼

barcode

其他方式

如果你只是需要運(yùn)行一個簡單的腳本(只包含一個文件)的話,可以不用創(chuàng)建一個 Dockerfile。在接下來的例子里,確保你將my_script.py文件存放在/usr/src/widget_app/目錄下,并且將容器命名為my-first-python-script。

Python 3

docker run -it --rm --name my-first-python-script -v "$PWD":/usr/src/widget_app python:3 python my_script.py

Python 2

docker run -it --rm --name my-first-python-script -v "$PWD":/usr/src/widget_app python:2 python my_script.py

我的博客即將同步至騰訊云開發(fā)者社區(qū),邀請大家一同入駐:https://cloud.tencent.com/developer/support-plan?invite_code=wpd2w8xwycq1

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容