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` 構建規則警告您在 Dockerfile 中使用相對路徑的 `WORKDIR` 而未首先指定絕對路徑,這是有原因的。此規則的理由是,為外部構建的基礎映象使用相對工作目錄容易出錯,因為工作目錄可能會在未發出警告的情況下在上游更改,從而導致構建的目錄層次結構完全不同。

示例

❌ 錯誤:這假定基礎映象中的 `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 .