【问题标题】:Build docker image jar file : COPY failed: no source files were specified构建 docker 映像 jar 文件:复制失败:未指定源文件
【发布时间】:2021-05-17 13:43:40
【问题描述】:

我有一个通过运行 maven 全新安装获得的 leshan 服务器 jar 文件(我已对其进行了一些更改)。我指定我在 linux 中工作,并将这个 jar 文件放在桌面中包含的“leshan_docker”文件夹中。在同一个文件夹下还有一个dockerfile用来构建服务器镜像,写法如下:

FROM openjdk:8-jre-alpine

COPY /Desktop/leshan_docker/leshan-server-demo-*.jar /Desktop/leshan_docker/  

CMD ["java", "-jar", "/leshan-server-demo-2.0.0-SNAPSHOT.jar"]

但是当我通过这个命令去构建时:

sudo docker build -f Dockerfile3 -t leshan-server3 .

它向我报告以下错误:

Sending build context to Docker daemon     12MB
Step 1/3 : FROM openjdk:8-jre-alpine
 ---> f7a292bbb70c
Step 2/3 : COPY /Desktop/leshan_docker/leshan-server-demo-*.jar /Desktop/leshan_docker/
COPY failed: no source files were specified

我该如何解决这个问题?提前感谢您的回答。

【问题讨论】:

  • 我怀疑文件夹 /Desktop 是否存在。你是不是指/home/<username>/Desktop
  • linux的根目录下没有Desktop目录。指定绝对路径。目的地也是如此。
  • 你的意思是这样的:/home//Desktop/leshan_docker/...?还是只有“leshan_docker”文件夹? @RatulSharker
  • cd 到你的/Desktop/leshan_docker/ 然后运行pwd 它会显示绝对路径

标签: linux docker dockerfile


【解决方案1】:

带有COPY 命令的源路径应该与构建上下文相关。您的构建上下文位于您正在运行 sudo docker build 的文件夹中,因为您给出的最后一个参数是 .。我强烈建议您查看the docs

COPY 命令的目标路径应该与容器中的路径相关。现在可行的方法是将您的 .jar 移动到根目录并从那里运行它。

因此,如果您的 jar 文件位于您运行命令的同一目录中,请将其更改为:

COPY leshan-server-demo-*.jar /  

最好在容器中实际创建一个新目录来保存您的 .jar 文件,以使您的工作更有条理。

【讨论】:

  • 好吧,完美,它工作了,对不起,但我还是 docker 新手,我不得不为大学项目做这件事。再次感谢您的帮助,感谢您的解释,现在我明白我错了! @暂定
  • 不客气!我明白了,我也是大学生。 @GianmarcoPlutino
猜你喜欢
  • 2020-05-02
  • 1970-01-01
  • 2019-10-27
  • 1970-01-01
  • 2021-01-03
  • 2021-03-19
  • 2016-10-26
  • 2022-01-14
  • 2021-12-11
相关资源
最近更新 更多