docker -компоновка без копирования файлов в папку tmp для создания контейнера - PullRequest
0 голосов
/ 06 мая 2020

У меня есть контейнер для бота Telegram, работающий в контейнере docker, который создается с помощью следующего файла Docker:

FROM debian:stretch
RUN apt-get -qq update && apt-get -qq install -y g++ make binutils cmake libssl-dev libboost-sysstem-dev libcurl4-openssl-dev zlib1g-dev
WORKDIR /usr/src/tgbot-cpp
COPY include include
COPY src src
COPY CMakeLists.txt ./
RUN cmake .
# ...

Dockerfile помещается в /home/me/docks/tbot/Dockerfile.

Однако теперь, когда я хочу немного упорядочить файлы, то есть поместить include, src и CMakeLists.txt в подпапку с именем containerBuildFiles (absolute: home/me/docks/tbot/containerBuildFiles), я делаю следующее:

  • вызов docker-compose down
  • редактировать Dockerfile:
# ...
 [-] COPY include include
 [-] COPY src src
 [-] COPY CMakeLists.txt ./
 [+] COPY containerBuildFiles ./
# ...
  • mkdir containerBuildFiles
  • mv -t containerBuildFiles include src CMakeLists.txt
  • (на всякий случай) docker-compose build --no-cache --force-rm --pull

Что дает мне следующий результат:

[...]

Step 5/8 : COPY containerBuildFiles ./
ERROR: Service 'tgbot' failed to build: COPY failed: stat /home/docker/tmp/docker-builder654813864/containerBuildFiles: no such file or directory

Теперь, когда я отменяю изменения, сделанные в Dockerfile и в структуре каталогов все снова работает нормально.

Я также пробовал изменить путь в Dockerfile с containerBuildFiles на ./containerBuildFiles соответственно. /home/me/docks/tbot/containerBuildFiles (я знаю, что это плохая практика, но я хотел попробовать) или просто запустить docker build . -t tbot_test --no-cache, те же результаты.

Моя идея заключалась в том, что, возможно, контекст docker -compose не обновляется правильно. По-видимому, файлы из контейнера docker не копируются правильно в папку /home/docker/tmp.

Итак, теперь мой вопрос: как я могу обновить контекст docker -compose, чтобы обновленные папки были переданы для правильного создания docker контейнеров снова?

Любая помощь приветствуется.

1 Ответ

1 голос
/ 07 мая 2020

Решено путем удаления файла .dockerignore.

[РЕДАКТИРОВАТЬ] Причина: файл .dockerignore содержит строки, которые игнорируют все папки, кроме include, src или файла CMakeLists.txt :

!include
!src
!CMakeLists.txt

, чтобы они не копировались.

...