Как использовать несколько Dockerfiles в монорепо? - PullRequest
0 голосов
/ 23 марта 2019

Я пытаюсь настроить среду разработки Docker в Windows. У меня есть структура каталогов кода так:

project/
  node-app/
  react-app-1/
  react-app-2/
  shared/

node-app, react-app-1 и react-app-2 все зависит от кода в shared. Итак, я думал о том, чтобы в каждом из приложений было Dockerfile, примерно так:

FROM node:10.0

WORKDIR /app
COPY ../ .

WORKDIR /app/node-app
RUN npm install

Однако, это не работает - Docker выдает мне ошибку, говоря, что это Forbidden path outside the build context: ../.

Как лучше всего решить эту проблему? Я смотрю на настройку Docker Compose после того, как это отсортировано (еще раз для локальной разработки), поэтому мое идеальное решение будет иметь это в виду.

1 Ответ

2 голосов
/ 23 марта 2019

COPY ../ . недопустимо, поскольку .. находится вне контекста сборки (по умолчанию это каталог, из которого выдается команда docker build).

Чтобы исправить это, вы можете собрать свое приложение из верхнего каталога ($PWD = project/), тем самым сделав все файлы / каталоги в этом каталоге доступными из контекста сборки, и указать Dockerfile, который вы хотите использовать для сборки:

cd project/ && docker build -t <your_image_name> -f node-app/Dockerfile .

или:

docker build -t <your_image_name> -f /path/to/project/node-app/Dockerfile /path/to/project/

И, конечно, замените COPY ../ . на COPY . ., так как вы сейчас строите из верхнего каталога.

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