iT邦幫忙

2022 iThome 鐵人賽

DAY 29
0

開發者可以將應用程式打包成「容器」,並發布到網路上提供其他使用者下載,大家都可以透過容器使用映像檔來執行應用程式。
三個主要步驟為建置(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命令列

然後下面是我輸入的指令:

  1. 我們先建立 image(映像檔) 我們這邊取名為 image

    docker build --no-cache -t image .-t--tag 的縮寫
    docker build --tag image .也有相同的功能
    .設定docker尋找的檔案位置,.意思為當前的資料夾

    我們可以用 docker image lsdocker image ls 'i*'->找i開頭的映像檔

  2. 直接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 <專案實體路徑>:</我工作目錄的路徑名稱>

  3. 我們看一下docker的結果與瀏覽器的結果

    docker點擊他的命令列並輸入ls,如果看到專案的目錄結構代表成功了~

    再來檢查一下 volume ㄟ嘿~有東西ㄟ

    瀏覽器開啟http://localhost:5000


    只要我們執行 docker file 且Flask有開Debug模式基本上,只要存檔一次,把網頁重新整理就可以了。不用像之前還號重新執行Code


上一篇
Day 28 Git 教學
下一篇
最後一天我有些話想說
系列文
資工琪琪的後端學習筆記(python&flask)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言