docker技術總結(二)

jpx發表於2024-07-18

五、Dockerfile:用於定義 Docker 映象內容的指令碼檔案。

Dockerfile基本結構

一個典型的 Dockerfile 由一系列指令組成,每個指令用於執行特定的任務,如指定基礎映象、複製檔案、執行命令等。常用的 Dockerfile 指令包括:

  1. FROM

    • 指定構建新映象所基於的基礎映象。
    • 示例: FROM ubuntu:20.04
  2. LABEL

    • 為映象新增後設資料。
    • 示例: LABEL maintainer="you@example.com"
  3. RUN

    • 在映象構建時執行命令,通常用於安裝軟體包。
    • 示例: RUN apt-get update && apt-get install -y python3
  4. COPY

    • 將本地檔案或目錄複製到映象中。
    • 示例: COPY . /app
  5. ADD

    • 功能類似於 COPY,但可以處理 URL 和解壓 tar 檔案。
    • 示例: ADD https://example.com/file.tar.gz /app/
  6. CMD

    • 指定容器啟動時要執行的命令,可以被 docker run 提供的命令替代。
    • 示例: CMD ["python3", "app.py"]
  7. ENTRYPOINT

    • 配置容器啟動時的主程序,通常用於不可替代的命令。
    • 示例: ENTRYPOINT ["python3", "app.py"]
  8. ENV

    • 設定環境變數。
    • 示例: ENV APP_HOME /app
  9. EXPOSE

    • 宣告容器監聽的埠,但不會實際開啟埠,需要使用 docker run -p 對映。
    • 示例: EXPOSE 8080
  10. VOLUME

    • 定義匿名卷或指定卷,以便持久化資料。
    • 示例: VOLUME /data
  11. WORKDIR

    • 設定工作目錄,後續命令會在這個目錄下執行。
    • 示例: WORKDIR /app
  12. USER

    • 指定執行後續命令的使用者。
    • 示例: USER appuser
  13. ARG

    • 定義構建引數,可以在 docker build 時傳遞。
    • 示例: ARG VERSION=1.0
  14. HEALTHCHECK

    • 配置容器健康檢查命令。
    • 示例: HEALTHCHECK --interval=5m --timeout=3s CMD curl -f http://localhost/ || exit 1

寫一個簡單的django專案的Dockerfile構建

首先我們要有一個基本的django專案目錄結構:

根據目錄結構,可以寫出Dockerfile檔案

FROM python:3.9

# 設定環境變數
ENV PYTHONUNBUFFERED=1

# 建立工作目錄
WORKDIR /app

# 複製專案的依賴檔案
COPY requirements.txt /app/

# 安裝專案的依賴
RUN pip install --no-cache-dir -r requirements.txt

# 複製專案程式碼
COPY . /app/

# 暴露Django的預設埠
EXPOSE 8000

# 執行Django開發伺服器
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

相關文章