我知道您不能脱离Docker的构建上下文,我正在寻找有关如何在两个文件夹之间(构建上下文之外)共享文件的替代方法。
我的文件夹结构是
project
- server
Dockerfile
- client
Dockerfile
我的client
文件夹需要访问server
文件夹中的文件以进行一些代码生成,其中根据服务器的合同来构建客户端。
client
Dockerfile如下所示:
FROM node:10-alpine AS build
WORKDIR /app
COPY . /app
RUN yarn install
RUN yarn build
FROM node:10-alpine
WORKDIR /app
RUN yarn install --production
COPY --from=build /app ./
EXPOSE 5000
CMD [ "yarn", "serve" ]
我在docker build -t my-name .
目录中运行client
。
在RUN yarn build
步骤中,脚本正在../server/src/schema/schema.graphql
中寻找一个找不到的文件,因为该文件位于client
目录之外,因此也在Docker的构建上下文之外。
我该如何解决此问题,或解决该问题的其他建议?
答案 0 :(得分:0)
最简单的方法是将源树的根用作Docker上下文目录,将其指向一个或另一个Dockerfile,并明确说明您是否在使用2^n
或client
树。
server
cd $HOME/project
docker build \
-t project-client:$(git rev-parse --short HEAD) \
-f client/Dockerfile \
.
在GraphQL的特定情况下,取决于您的应用程序和库堆栈,有可能完全避免需要该模式,而只进行未经检查的客户端调用;或在启动时进行内省查询以动态获取模式;或维护模式文件的两个单独副本。我从事的某些项目使用GraphQL接口,但是服务器和客户端位于实际的单独存储库中,别无选择,只能存储架构的单独副本,但是如果您对更改小心,实际上这不是问题。