iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0
Cloud Native

docker系列 第 12

Day 12 DockerFile 2

  • 分享至 

  • xImage
  •  

讓我們解釋一下上一篇的 Dockerfile 做了什麼事情。

第一行 FROM python:3.9.10-alpine3.15 宣告了我們要使用的基礎映像檔(Image),這可以視為我們的開發環境。通常,它會位於 Dockerfile 的頂部,並且一個 Dockerfile 通常只有一個 FROM 指令。這一行的意思是,我們要使用的基礎映像檔是基於 Alpine Linux 3.15,並且包含了 Python 3.9.10 環境。它們都屬於 Python 映像檔的分類。如果你是使用 Node.js 或其他開發環境,你可以在 DockerHub 上尋找相對應的映像檔。

接下來的第二行 WORKDIR /test-project 指定了工作目錄。如果不指定的話,預設工作目錄會是根目錄 /,並且會自動建立。我習慣在 Dockerfile 中建立一個專用的工作目錄,專門用來存放與專案相關的文件,這樣會更整潔。

第三行很簡單,COPY * . 的作用是將當前目錄下的所有文件複製到容器中。

第四行也很簡單,RUN pip install -r requirements.txt 用於安裝所有需要的 Python 套件。

第五行 EXPOSE 5000 宣告了容器內部開放的端口,但它只是宣告,不會自動將端口連接到主機。你需要在運行容器時進行端口映射,才能讓外部訪問。

第六行 CMD ["python", "app.py"] 則是指定容器啟動後要執行的命令。

或許你已經注意到第四行和第六行似乎有相同的功能,為什麼一個是 RUN 而另一個是 CMD 呢?

這是因為 RUN 是在建立 Docker 映像檔時運行的命令,而 CMD 則是在容器啟動時運行的命令。因此,通常會使用 RUN 來安裝和配置環境,而在容器啟動時使用 CMD 來指定應用程序的執行命令。

這樣,你已經學會了 Dockerfile 的基本用法。


上一篇
Day11 DockerFile 1
下一篇
Day13 Dockerfile 3
系列文
docker30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言