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 .