我正在嘗試了解 nginx 官方 Docker 映像的Dockerfile。我專注于以下幾行:
COPY docker-entrypoint.sh /
COPY 10-listen-on-ipv6-by-default.sh /docker-entrypoint.d
我在本地玩 Docker Desktop。如果我的 Dockerfile 只有以下行:
FROM nginx
并構建我自己的 nginx 鏡像,然后構建what is the build context for the Dockerfilenginx Docker 鏡像?我的問題是我無法理解檔案的位置:
docker-entrypoint.sh
10-listen-on-ipv6-by-default.sh
是活生生的,它們是從哪里復制而來的?
同樣的問題適用于Ubuntu影像
uj5u.com熱心網友回復:
構建背景關系始終是您提供給構建命令的目錄,它通常Dockerfile直接包含在該目錄中。
docker build ./build-context-directory
# Docker Compose syntax
build: ./build-context-directory
build:
context: ./build-context-directory
關于背景關系目錄的兩個重要的事情是,它作為構建程序的第一步被傳輸到 Docker 守護程式,并且您永遠不能COPY或ADD背景關系目錄之外的任何東西進入映像(除了ADD下載 URL 的能力)。
當你的 Dockerfile 以FROM一行開頭時
FROM nginx
Docker 包含該映像的預構建二進制副本作為映像的基礎。它不會重復原始 Dockerfile 中的步驟,并且您不需要該鏡像的 build-context 目錄即可基于它構建新鏡像。
因此,典型的僅托管靜態檔案的基于 Nginx 的影像可能看起來像
FROM nginx
COPY index.html /usr/share/nginx/html
COPY static/ /usr/share/nginx/html/static/
# Get EXPOSE, ENTRYPOINT, CMD from base image; no need to repeat them
您只能使用應用程式的 HTML 內容運行它,但不能使用您在問題中參考的任何 Nginx 特定細節。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/490070.html
