welcom ! Handel home

2025年4月15日 星期二

Dockerfile 的基本概念和常用指令

 Dockerfile 是一個文字檔案,包含一系列指令,用於自動化 Docker 映像檔的建立過程。

以下是 Dockerfile 的基本概念和常用指令:

Dockerfile 的作用

  • 自動化映像檔建立: Dockerfile 允許您以程式化的方式定義映像檔的內容,從而實現映像檔建立的自動化和可重複性。
  • 版本控制: 您可以將 Dockerfile 納入版本控制系統,以便追蹤映像檔的變更歷史。
  • 環境一致性: Dockerfile 確保應用程式在不同的環境中(例如開發、測試和生產環境)以相同的方式執行。

Dockerfile 的基本結構

Dockerfile 由一系列指令組成,每個指令都會在映像檔中建立一個新的層。以下是一些常用的 Dockerfile 指令:

  • FROM: 指定基礎映像檔,所有後續指令都基於此映像檔執行。
  • RUN: 在映像檔中執行命令,例如安裝軟體套件或執行腳本。
  • COPY: 將檔案或目錄從主機複製到映像檔中。
  • ADD: 類似於 COPY,但具有額外功能,例如自動解壓縮壓縮檔。
  • WORKDIR: 設定工作目錄,所有後續指令都在此目錄中執行。
  • EXPOSE: 指定容器將在其上監聽的埠。
  • CMD: 指定容器啟動時執行的預設命令。
  • ENTRYPOINT: 配置一個可執行容器。
  • ENV: 設定環境變數。
  • VOLUME: 建立掛載點,用於持久化資料。

使用 Dockerfile 的步驟

  1. 建立 Dockerfile: 在文字編輯器中建立一個名為 Dockerfile 的檔案。
  2. 撰寫 Dockerfile 指令: 在 Dockerfile 中撰寫所需的指令,以定義映像檔的內容。
  3. 建置映像檔: 使用 docker build 命令根據 Dockerfile 建立映像檔。
  4. 執行容器: 使用 docker run 命令從映像檔啟動容器。

Dockerfile 的最佳實踐

  • 盡量使用官方提供的映像檔作為基礎映像檔。
  • 將相關的指令組合在一起,以減少映像檔的層數。
  • 使用 .dockerignore 檔案排除不必要的檔案,以縮小映像檔的大小。
  • 使用多階段建置(multi-stage builds)來優化映像檔的大小。
  • 為映像檔新增TAG,方便管理。

範例 Dockerfile

Dockerfile
# 使用官方的 Python 映像檔作為基礎映像檔
FROM python:3.9-slim-buster

# 設定工作目錄
WORKDIR /app

# 將應用程式程式碼複製到映像檔中
COPY . /app

# 安裝應用程式的相依套件
RUN pip install --no-cache-dir -r requirements.txt

# 指定容器啟動時執行的預設命令
CMD ["python", "app.py"]


沒有留言: