我是docker的新手,了解我正在尝试构建一个简单的映像,但是对于我而言,如果再次使用相同的映像名称,则会忽略某些构建步骤。
我确定我做错了,但是只是不明白为什么会这样。
下面是dockerfile
FROM ubuntu AS base
COPY ./runner1/data /app
FROM base
COPY ./runner1/dep /app
FROM base AS final
COPY ./runner1/sample.sh /app/sample.sh
RUN chmod u+x /app/sample.sh
ENTRYPOINT [ "sh", "/app/sample.sh" ]
Building runner1
Step 1/8 : FROM ubuntu AS base
---> 94e814e2efa8
Step 2/8 : COPY ./runner1/data /app
---> Using cache
---> 675aabaf1cc0
Step 3/8 : FROM base
---> 675aabaf1cc0
Step 4/8 : COPY ./runner1/dep /app
---> Using cache
---> dcd1a390efd3
Step 5/8 : FROM base AS final
---> 675aabaf1cc0
Step 6/8 : COPY ./runner1/sample.sh /app/sample.sh
---> Using cache
---> 99b286322a7c
Step 7/8 : RUN chmod u+x /app/sample.sh
---> Using cache
---> 3599903cb1b8
Step 8/8 : ENTRYPOINT [ "sh", "/app/sample.sh" ]
---> Using cache
---> 977e3379ab8c
Successfully built 977e3379ab8c
Successfully tagged sampleimage_runner1:latest
运行此命令时,我仅看到从映像'675aabaf1cc0'复制的/ app / data文件夹,而来自步骤3,4的映像'dcd1a390efd3'似乎被忽略了。
答案 0 :(得分:0)
您将base设置为第二阶段的父映像,但从未在其他任何地方使用过第二阶段。我相信您可以将目标设置为2来进行显式构建,以查看由此产生的图像。
如果您打算将第2阶段的输出用作第3阶段的父图像,则需要命名第二阶段,并以第2阶段的名称作为第3阶段的父图像。例如。
FROM ubuntu AS base
COPY ./runner1/data /app
FROM base as middle
COPY ./runner1/dep /app
FROM middle AS final
COPY ./runner1/sample.sh /app/sample.sh
RUN chmod u+x /app/sample.sh
ENTRYPOINT [ "sh", "/app/sample.sh" ]