我有以下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
在这种情况下如何复制文件?
答案 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/