WorkdirRelativePath
目錄
輸出
Relative workdir 'app/src' can have unexpected results if the base image changes
說明
在建置階段指定 WORKDIR
時,您可以使用絕對路徑,例如 /build
,或相對路徑,例如 ./build
。使用相對路徑表示工作目錄是相對於先前工作目錄的。因此,如果您的基礎映像使用 /usr/local/foo
作為工作目錄,並且您指定一個相對目錄,例如 WORKDIR build
,則有效工作目錄將變為 /usr/local/foo/build
。
WorkdirRelativePath
建置規則會在您使用帶有相對路徑的 WORKDIR
卻沒有先在同一個 Dockerfile 中指定絕對路徑時發出警告。此規則的基本原理是,對外部建置的基礎映像使用相對工作目錄容易出錯,因為工作目錄可能會在上游更改而沒有警告,導致建置的目錄階層完全不同。
範例
❌ 不良:這假設基礎映像中的 WORKDIR
是 /
(如果上游發生更改,則 web
階段會損壞)。
FROM nginx AS web
WORKDIR usr/share/nginx/html
COPY public .
✅ 良好:前導斜線可確保 WORKDIR
永遠位於所需的路徑。
FROM nginx AS web
WORKDIR /usr/share/nginx/html
COPY public .