Dockerfile詳情,Django項目中使用Dockerfile
目錄
- Dockerfile詳情,Django項目中使用Dockerfile
- 介紹
- 常用指令
- Dokcerfile部署Django項目
- 安裝Docker
- 獲取項目源碼
- Dockerfile文件
- 構建Docker鏡像
- 運行Docker容器
介紹
Dockerfile是一個文本文件,一般位于項目根目錄中,文件名必須為Dockerfile,Docker會根據Dockerfile文件生成新的自定義鏡像
常用指令
參數 | 描述 | 示例 |
---|---|---|
FROM | 指定基礎鏡像,每個 Dockerfile 必須以該指令開始 | FROM python:3.10 |
WORKDIR | 設置工作目錄,在構建鏡像時,所有后續指令都在這個目錄下執行 | WORKDIR /app |
COPY | 將文件或目錄從本地文件系統復制到鏡像中 | COPY . /app |
ADD | 類似于 COPY ,但可以處理 URL 和 tar 文件 | ADD https://example.com/file.tar.gz /app |
RUN | 在鏡像中執行命令,通常用于安裝軟件包 | pip install --no-cache-dir -r requirements.txt |
CMD | 指定容器啟動時要執行的命令,可以有多個,但只有最后一個生效 | CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"] |
ENTRYPOINT | 設置容器啟動時要執行的主命令,通常和 CMD 配合使用,用于傳遞參數 | ENTRYPOINT ["python"] CMD ["app.py"] |
ENV | 設置環境變量 | ENV APP_HOME /app |
EXPOSE | 聲明容器會監聽的端口,但不會實際打開端口,用于文檔和互聯 | EXPOSE 8080 |
VOLUME | 創建掛載點,用于持久化數據或共享數據,和-v 一樣 | VOLUME ["/data"] |
USER | 指定運行容器時使用的用戶 | USER appuser |
ARG | 定義在構建時傳遞的變量,可以在 RUN 指令中使用 | ARG version=1.0 RUN echo $version |
LABEL | 添加元數據到鏡像,例如維護者信息、版本號等 | LABEL maintainer="example@example.com" |
ONBUILD | 設置觸發指令,用于延遲執行直到子鏡像中使用 | ONBUILD RUN echo "Hello from ONBUILD" |
STOPSIGNAL | 設置發送到容器以停止它的系統調用信號 | STOPSIGNAL SIGKILL |
HEALTHCHECK | 指定容器的健康檢查命令 | `HEALTHCHECK --interval=30s CMD curl -f http://localhost |
SHELL | 允許在 Dockerfile 中切換到不同的 shell 環境 | SHELL ["powershell", "-Command"] |
Dokcerfile部署Django項目
安裝Docker
獲取項目源碼
可以遠程部署,也可以git下載
git clone......
Dockerfile文件
# 使用官方Python鏡像作為基礎鏡像
FROM python:3.10# 設置工作目錄
WORKDIR /app# 將當前目錄下的代碼復制到容器的/app目錄下
COPY . /app# 安裝依賴
RUN pip install --no-cache-dir -r requirements.txt# 暴露端口
EXPOSE 8000# 運行Django應用
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
構建Docker鏡像
docker build -t my_project .
運行Docker容器
構建完成后,運行以下命令啟動容器
docker run -d -p 80:8000 --name Demo01 my_project
-p
:將宿主機的80端口映射到容器的8000端口