Общие файлы между контейнерами с докером - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть структура проекта, подобная следующей

app/
   docker-compose.yml
   module1/
       Dockerfile
       module1.py
   module2/
       Dockerfile
       module2.py
   common/
       common_things.py

В моем Dockerfile для module1 у меня есть

COPY module1.py /app
COPY ../common /app/common

Но Docker не нравится эта вторая строка.Ошибка ниже

ERROR: Service 'module1' failed to build: COPY failed: Forbidden path outside the build context: ../common ()

Как мне сообщить Docker через Dockerfile или Docker-compose, что для модуля module1 нормально брать файлы из ../common?Я мог бы использовать символические ссылки, так чтобы module1 и module2 имели общее в своих соответствующих директориях, но это похоже на избыточное убийство ...

Дополнительная оценка: Каков наилучший способ обмена файлами между контейнерами Docker?Возможно, есть другой способ, о котором я не знаю.

1 Ответ

0 голосов
/ 22 ноября 2018

Этого можно добиться, передав весь каталог приложения в виде контекста сборки.

docker-compose.yml будет выглядеть так:

version: '3'
services:
  module1:
    build:
      context: ./
      dockerfile: module1/Dockerfile
...

(первый) Dockerfile будетвыглядят так:

...
COPY module1/module1.py /app
COPY common /app/common
...

Некоторые дальнейшие комментарии:

Обычно вы публикуете общие части двух ваших изображений докера в качестве общей библиотеки.Я не очень знаком с Python, но я считаю, что он сводится к следующему:

  • опубликуйте ваш common_things.py в виде пакета python в каком-либо хранилище python, чтобы его можно было установить через pip install
  • добавьте requirements.txt файл в каждый из ваших Docker-образов и обратитесь к пакету Python внутри него
  • запустите pip install -r requirements.txt во время сборки Docker, чтобы установить common_things-package вdocker-image.

Однако это может быть излишним для вашего сценария использования, поэтому я думаю, что ваше решение для обмена файлом может быть хорошим выбором для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...