Skip to content

Dockerfile 構建流程

Dockerfile 是一個文本文件,包含了構建 Docker 映像檔所需的所有指令。透過定義的流程,開發者可以自動化地建立一致的執行環境^[600-developer-docker-dockerfile-dockerfile-01.md]。

構建流程概述

構建 Docker 映像檔的標準流程通常包含編寫腳本、執行構建指令以及運行容器^[600-developer-docker-dockerfile-dockerfile-01.md]。在 Kubernetes 應用程式的開發流程中,這是用於產生新版本容器映像的核心步驟^[400-devops-06-kubernetes-kubernetes.md]。

  1. 準備:建立 Dockerfile 與所需的相依檔案(如應用程式壓縮包)^[600-developer-docker-dockerfile-dockerfile-01.md]。
  2. 構建:使用 docker build 指令根據 Dockerfile 生成映像檔^[600-developer-docker-dockerfile-dockerfile-01.md]。
  3. 運行:使用 docker run 指令啟動容器^[600-developer-docker-dockerfile-dockerfile-01.md]。
  4. 部署:將映像檔推送到倉庫,以便部署到 Kubernetes 等平台^[600-developer-docker-dockerfile-dockerfile-01.md, 400-devops-06-kubernetes-kubernetes.md]。

常用指令

  • FROM: 指定基礎映像檔(如 centos:7)^[600-developer-docker-dockerfile-dockerfile-01.md]。
  • RUN: 執行指令(例如安裝套件 yum install -y wget)^[600-developer-docker-dockerfile-dockerfile-01.md]。
  • ADD/COPY: 將檔案從主機複製到映像檔內^[600-developer-docker-dockerfile-dockerfile-01.md]。
  • ENV: 設定環境變數^[600-developer-docker-dockerfile-dockerfile-01.md]。
  • CMD: 定義容器啟動時執行的預設指令^[600-developer-docker-dockerfile-dockerfile-01.md]。
  • EXPOSE: 指定容器對外開放的連接埠^[600-developer-docker-dockerfile-dockerfile-01.md]。

實作範例

以下指令常用於構建與測試:

  • 構建映像檔: docker build -t [映像檔名稱] . --no-cache^[600-developer-docker-dockerfile-dockerfile-01.md]
  • 運行容器: docker run -p [主機連接埠]:[容器連接埠] [映像檔名稱]^[600-developer-docker-dockerfile-dockerfile-01.md]

Sources

  • 400-devops-06-kubernetes-kubernetes.md
  • 600-developer-docker-dockerfile-dockerfile-01.md