開發者可以將應用程式打包成「容器」,並發布到網路上提供其他使用者下載,大家都可以透過容器使用映像檔來執行應用程式。
三個主要步驟為建置(build)、共享(share)、執行(run)
只利用dockerfile copy環境(requirement.txt) 也能達到與copy * . 同樣的功能。補充Dockerfile是用於打包應用程式的腳本,但對於分散式應用程式Dockerfile僅用於打包應用程式的一部分
我用的作業系統是windows10
dockerfile
FROM python:3.9.10-alpine3.15 #載入映像檔必須以其他且存在的映像檔作為基礎
WORKDIR /test #會「在映像檔系統中」建立一個'/test'目錄,並設為工作目錄
COPY requirements.txt /test/. #是將檔案or目錄從本機複製一份到映像檔裡,語法為 [原始路徑 例:req.txt] [目標路徑 例:/test/.]
VOLUME [ "\test" ]
RUN pip install -r requirements.txt
EXPOSE 5000 #指定連接埠
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "app:app", "--preload"] #會在Docker啟動時自動執行命令
# CMD [ "/bin/sh" ] 這一行的效果是直接使用bash命令列
然後下面是我輸入的指令:
我們先建立 image(映像檔) 我們這邊取名為 image
docker build --no-cache -t image .
,-t
是--tag
的縮寫docker build --tag image .
也有相同的功能.
設定docker尋找的檔案位置,.
意思為當前的資料夾
我們可以用docker image ls
或docker image ls 'i*'
->找i開頭的映像檔
直接run 我們這邊的container(容器)取名為 container
docker run -it -p 5000:5000 -v C:\Users\learn\Desktop\test-project:/test --name container image
或輸入docker run -d -p 5000:5000 -v C:\Users\learn\Desktop\test-project:/test --name container image
-d
是--detach
的簡寫,作用為背景執行
這邊掛載的參數為-v <專案實體路徑>:</我工作目錄的路徑名稱>
我們看一下docker的結果與瀏覽器的結果
docker點擊他的命令列並輸入
ls
,如果看到專案的目錄結構代表成功了~
再來檢查一下 volume ㄟ嘿~有東西ㄟ
瀏覽器開啟http://localhost:5000
只要我們執行 docker file 且Flask有開Debug模式基本上,只要存檔一次,把網頁重新整理就可以了。不用像之前還號重新執行Code