Dockerfile 文件示例


參考:

  1. 知乎-isisiwish
  2. 博客園-波神
  3. Deepzz 有關於Volume的配置和docker-compose.yml的編寫。

Dockerfile各參數說明

# ############ 主要用來構建鏡像
FROM                # 指定鏡像(必須有)
MAINTAINER      # 聲明維護者(可有可無;位置無所謂,放在FROM后比較合理)
USER                 # 設置容器運行的UID(可有可無)
ENV                    # 指定環境變量(后續命令可以直接引用“$envname”)
RUN                    # 執行shell命令,用於創建容器(一般地,每條RUN對應一條命令;也可以利用 `;\`來執行多條命令)
# ############ 主要是用於構建鏡像后的部署過程
COPY                 # 復制宿主機的文件到容器內
ADD                    # 添加宿主機的文件`或者URL`到容器內(和COPY基本相同,區別多了個下載網絡文件)
VOLUME             # 將容器內的目錄映射到宿主機內(方便在宿主機內查看文件,比如日志,項目源碼等)
WORKDIR           # 工作目錄,指明`CMD命令的運行目錄`
ENTRYPOINT      # `只能有一個entrypoint存在,不可被docker run 命令的命令行參數覆蓋`
EXPOSE              # 容器暴露的端口
CMD                    # 執行shell命令,`和RUN區別`:run用於部署,cmd用於部署后的運行,並且可以和entrypoint配合使用(一般不使用),可以`被命令行參數覆蓋`

Dockerfile部分參數可被命令行參數覆蓋

允許我們部署的時候動態輸入參數,覆蓋Dockefile的指定參數

具體示例建使用場景:2.

使用場景

1. 構建docker image提供給他人使用

常用命令: docker build -t image_name:iamge_tag -f path/Dockerfile --rm ./app

2. 其他人根據docker image部署項目

常用命令:docker run -d -e -v -u -w -p image_name
說明:-d:后台運行; -e:指定環境變量; -v: volume映射宿主機和容器內目錄;-u:指定運行容器的UID;-w:指定workdir; -p:指定端口

解釋

  1. dockerfile幾乎總是放在項目根目錄下;
  2. docker根據項目目錄下的項目文件和提供dockerfile提供的項目配置構建一個獨立的環境用來部署項目;
  3. 一般地,我們不需要保存docker image,因為Dockerfile更加易於保存和傳遞,而且更加輕量級,易於編輯,環境一致;
  4. 有時候為了更加快速的進行部署,節省構建的時間,可以保存docker鏡像文件,運行容器的時候只需通過命令行調整運行參數即可。

docker-compose.yml

docker-compose是官方提供的用來管理docker image的工具,更加方便;
實際項目中一個項目總是依賴於多個服務,這里用一個docker-compose.yml

官方docker-compose.yml示例


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM