Docker多阶段构建:如何为每个阶段全局设置WORKDIR?

6 dockerfile docker-multi-stage-build

我的 Dockerfile 中有很多阶段。现在在每个阶段我都复制/粘贴#WORKDIR $PYSETUP_PATH

FROM base as buidler
WORKDIR $PYSETUP_PATH

FROM buidler as test
WORKDIR $PYSETUP_PATH

FROM buidler as deploy
WORKDIR $PYSETUP_PATH
Run Code Online (Sandbox Code Playgroud)

如何减少此样板代码并WORKDIR仅在全局范围内设置一次?

我想要的是:

WORKDIR = $MY_DEFAULT_WORDIR  # Set globally for every stage


FROM base as buidler


FROM buidler as test


FROM buidler as deploy
Run Code Online (Sandbox Code Playgroud)

Dav*_*aze 10

一条FROM线继承了其基本映像的几乎所有设置,包括其WORKDIR. 由于您的后期阶段源自第一阶段,因此您只需要包含WORKDIR在基础阶段中。

FROM base AS builder
WORKDIR /app

FROM builder AS test
# already in /app directory

FROM builder AS deploy
# already in /app directory
Run Code Online (Sandbox Code Playgroud)

  • 请注意,截至目前,多阶段“COPY”命令不支持“WORKDIR”。您将需要使用“COPY --from=builder /app/my-file ./”。 (3认同)