在容器中找不到 WORKDIR

And*_*rew 3 docker

我一直在构建 Nodejs 应用程序,并想研究 Docker 容器内的项目。但是当我通过检查正在运行的容器时,bin/bash我无法/app在容器中找到目录

构建图像时没有显示错误

这是我的 docker 镜像文件

FROM node:15.7.0 as build-stage
WORKDIR /app
COPY package*.json /app/
RUN npm install
COPY ./ /app/
ARG configuration=production
RUN npm run build -- --output-path=./dist/out --configuration $configuration

FROM nginx:1.18
COPY --from=build-stage /app/dist/out/ /usr/share/nginx/html
COPY ./nginx-custom.conf /etc/nginx/conf.d/default.conf
Run Code Online (Sandbox Code Playgroud)

lar*_*sks 7

S\xc3\xa8djro 有正确的答案,但我想简单地扩展一下。

\n

您正在使用所谓的多阶段构建。如果您还没有看过它们,链接的文档值得一读。

\n

每个FROM ...行都会启动一个新的构建阶段,只有最后阶段的内容与生成的 Docker 映像相关。

\n

文件中的其他阶段可用作COPY --from=...指令的来源。

\n

换句话说,只要添加第二个FROM ...行,如......

\n
FROM node:15.7.0 as build-stage\n.\n.\n.\nFROM nginx:1.18\n
Run Code Online (Sandbox Code Playgroud)\n

...那么第一阶段的内容将被有效丢弃,\n除非您使用 明确将它们复制到最终图像中COPY --from=...。你的/app目录仅存在于第一阶段,因为您在最后阶段将其复制到不同的位置。

\n