Как скопировать файл в Docker? - PullRequest
1 голос
/ 07 мая 2019

У меня есть следующий 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 ]

2 голосов
/ 07 мая 2019

Вы пытаетесь скопировать файл, расположенный в вашем контейнере, как если бы это был локальный файл, поэтому 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 голос
/ 07 мая 2019

Вы запускаете wget внутри контейнера, но затем пытаетесь COPY передать его с машины host в контейнер. Для копирования из одного местоположения контейнера в другое просто используйте 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 
0 голосов
/ 07 мая 2019
Команда

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/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...