如何使用标记的中间图像进行最终构建?

How to use tagged intermediate image for final build?

我创建了一个多阶段构建。

这是 Dockerfile:

# Builder
FROM node:10.16-alpine AS builder

... # Do stuff

# Release
FROM nginx:1.16.0-alpine

COPY --from=builder /usr/src/app/build /usr/share/nginx/html

... # Do stuff

ENTRYPOINT [ ... ]

非常直截了当,我会说。我知道你 运行 docker build -t website:latest . 它将创建一个中间图像 <none>,这是构建器图像,如果没有更改源或 [=13],稍后可能会使用它=].

所以,我的想法是像这样标记 builder 步骤:docker build --target builder -t website-builder . 这样即使来源发生变化,它也只会使用相同的标记而不是(请纠正我如果我错了)创建其他图像。

如果我 运行 首先使用 --target 标志构建,然后 运行 在没有它的情况下再次构建,则不会使用生成器。

总结一下:

  1. docker build --target builder -t website-builder .
  2. docker build -t website:latest .

已创建新的 <none> 图像,与 website-builder 相同。

如果更改,我怎样才能实现 'Release' 阶段使用并重写构建器映像?如果无法做到这一点,那么在这种情况下最佳做法是什么?有吗?

感谢您的坚持。我感谢任何反馈或建议。

我想你可以使用:

COPY --from=website-builder:latest .....