iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0

關於Dockerfile

Docker 能讀取 Dockerfile內的所有指令,可以於檔案中撰寫所有要執行的指令、以及需求,若後續有需要調整,也只需要在Dockerfile中新增或修改指令,就可以透過docker build 自動化幫我們執行於Dockerfile中所定義的所有指令,來構建出一個 image。

會依照指令順序由上到下執行,並且FROM一定要寫在第一行,會作為基礎的image,至少要有一個基礎的image,才可以構建image。

Dockerfile 的常用指令說明

FROM 表示 從哪一個image下載 : 後方加上版本號 FROM <image>:<tag>

ex. FROM arm64v8/openjdk:17-ea-16-jdk

⇒ 從 arm64v8/openjdk 中下載 17-ea-16-jdk

會找到Docker Hub中的image
https://ithelp.ithome.com.tw/upload/images/20230923/2016205846gAKAKT0m.png

WORKDIR </name>:在container內設置工作目錄路徑

RUN <要執行的指令>:image 構建時,要執行的指令。 ex. RUN yarn run

COPY <name> <path>:檔案名稱 / 要複製的檔案在專案中的路徑位置。

會將本地的檔案複製到container中。

EVN <key> <value> 用於 Dockerfile 中設定環境變數,這些變數可以在後續的指令中使用。 ex. ENV JAVA_HOME /user/…路徑位置

CMD[] 執行container時,預設要執行的,一個Dockerfile文件只能有一個CMD命令,若有多個CMD命令,只有最後一個會生效。

LABEL 可用來定義任何你想紀錄的訊息。ex. LABEL version="1.0”

USER <username> / <ID> 設定執行container的預設使用者、或是識別碼、使用者id 等等。

ex. USER root、USER 1001

EXPOSE <port> 讓其他人知道container是使用哪一個port號運行,不會影響container實際運行時的port號。 ex. EXPOSE 8080

其他詳細關於Dockerfile的使用方式,可以瀏覽官方文件 Dockerfile reference


上一篇
如何import資料到MySQL Container,以及從本地workbench連接
下一篇
專案中建立Dockerfile並執行
系列文
從0開始學習DevOps,並部署CICD至Java專案中30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言