如何在monorepo中使用多个Dockerfile?

时间:2019-03-23 12:34:02

标签: javascript node.js docker dockerfile

我正在尝试在Windows上建立Docker开发环境。我有这样的代码目录结构:

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

node-appreact-app-1react-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 个答案:

答案 0 :(得分:2)

COPY ../ .无效,因为..在构建上下文之外(默认情况下,这是发出docker build命令的目录)。

要解决此问题,您可以从顶层目录($PWD = project/)构建应用程序,从而使该目录中的所有文件/目录都可以从构建上下文中使用,并指定{{ 1}}要用于构建:

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 ../ .,因为您现在是从顶层目录进行构建的。