我正在尝试在Windows上建立Docker开发环境。我有这样的代码目录结构:
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(再次用于本地开发),因此我理想的解决方案应牢记这一点。
答案 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 ../ .
,因为您现在是从顶层目录进行构建的。