Компиляция файла в Dockerfile и перемещение его в другой каталог (Docker)

#image #docker #makefile #directory #dockerfile

#изображение #docker #makefile #каталог #dockerfile

Вопрос:

Я хочу скомпилировать makefile и переместить полученный скомпилированный файл в другой каталог. Например, если я нахожусь в каталоге:

 WORKDIR /Directory1/
  

И после:

 RUN make
  

Который должен создать скомпилированный файл с именем «abc». Затем я хочу переместить этот файл в другой каталог, который мы будем называть «Directory2». Это то, что я пробовал, но это не сработало:

 COPY /Directory1/abc/ /Directory2/
  

Любой совет?

Комментарии:

1. Во-первых, вы всегда должны точно указывать, что произошло (какие сообщения или ошибки вы получили и т. Д.), А не говорить «это не сработало». Это никому не поможет вам помочь. Во-вторых, есть ли у вас косая черта в конце вашего имени файла, например /Directory1/abc/ ? Если да, то почему? Это заставит команды предполагать, что abc это каталог, а не файл.

2. Извините, я новичок в Docker и stackoverflow. Я обязательно сделаю это в следующий раз.

Ответ №1:

В Docker есть концепция слоев.

В dockerfile каждая команда выполняется и создает отдельный слой, поэтому слой, созданный вашей командой make, недоступен для других слоев.

Чтобы заставить его работать, используйте команды make и copy за один запуск. например

 RUN cd /Directory1/ amp;amp; make amp;amp; cp abc /Directory2/
  

Комментарии:

1. (Это будет работать просто отлично, даже если вы RUN cp в отдельной команде создаете отдельный слой.)

2. Отлично, большое вам спасибо. Это именно то, что я искал.