如何在Docker中复制文件?

时间:2019-05-07 14:35:15

标签: docker sonarqube dockerfile

我有以下Dockerfile:

FROM sonarqube

RUN wget https://github.com/gabrie-allaigre/sonar-gitlab-plugin/releases/download/4.0.0/sonar-gitlab-plugin-4.0.0.jar
COPY sonar-gitlab-plugin-4.0.0.jar /opt/sonarqube/extensions/plugins/

复制文件时出现以下错误:

Removing intermediate container 63a3ae1d7390
Step 3/3 : COPY sonar-gitlab-plugin-4.0.0.jar /opt/sonarqube/extensions/plugins/
lstat sonar-gitlab-plugin-4.0.0.jar: no such file or directory

在这种情况下如何复制文件?

3 个答案:

答案 0 :(得分:2)

您正试图复制位于容器中的文件,就好像它是本地文件一样,因此Docker无法找到它。

使用这样的ADD应该可以使其工作:

FROM sonarqube

ADD https://github.com/gabrie-allaigre/sonar-gitlab-plugin/releases/download/4.0.0/sonar-gitlab-plugin-4.0.0.jar /opt/sonarqube/extensions/plugins/

更像“码头工人”

答案 1 :(得分:1)

您正在容器中运行wget,但随后尝试将其从 host 机器COPY移到容器中。要从一个容器位置复制到另一个容器位置,只需使用cp

RUN wget https://github.com/gabrie-allaigre/sonar-gitlab-plugin/releases/download/4.0.0/sonar-gitlab-plugin-4.0.0.jar \
 && cp sonar-gitlab-plugin-4.0.0.jar /opt/sonarqube/extensions/plugins/

更好的是,只需使用wget -O即可将文件保存到所需的位置。

RUN wget -o /opt/sonarqube/extensions/plugins/ \
        https://github.com/gabrie-allaigre/sonar-gitlab-plugin/releases/download/4.0.0/sonar-gitlab-plugin-4.0.0.jar 

答案 2 :(得分:0)

COPY命令将文件从主机复制到容器。
对于要在容器内运行的任何命令,都需要RUN

RUN wget https://github.com/gabrie-allaigre/sonar-gitlab-plugin/releases/download/4.0.0/sonar-gitlab-plugin-4.0.0.jar \
   && cp sonar-gitlab-plugin-4.0.0.jar /opt/sonarqube/extensions/plugins/