将文件从基础映像复制到当前构建映像

San*_*gde 1 containers docker dockerfile

尝试使用我构建的另一个自定义映像 (Y) 构建 Docker 映像 (X)。在这里,我尝试将文件夹从基本图像 Y 复制到 X,如下所示。

FROM some-image as base

COPY --from=base /root/.m2 /root

RUN mkdir -p /build
Run Code Online (Sandbox Code Playgroud)

但这会引发错误invalid from flag value base: pull access denied for base, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

我怎样才能做到这一点?

Adi*_*iii 6

您不是从某些基础映像中进行复制,而是尝试在同一映像中进行复制。

您需要有第二个阶段才能使用 COPY --from 您不能指向 --from 到您当前正在更改的同一阶段。

docker-cli-问题/1559

这是最简单的例子,

  • 在基础镜像中编译c程序
  • 从基础映像复制编译的程序
  • 因此,您的最终图像将很小,只有5MB
FROM alpine as build-env
RUN apk add --no-cache build-base
WORKDIR /app
COPY . .
# Compile the binaries
RUN gcc -o hello helloworld.c
FROM alpine
COPY --from=build-env /app/hello /app/hello
WORKDIR /app
CMD ["/app/hello"] 
Run Code Online (Sandbox Code Playgroud)

你好ç

# include <stdio.h>
  int main(){
   printf("Hello World!");
   return 0;
}
Run Code Online (Sandbox Code Playgroud)