rea*_*tor 18 node.js npm docker
我有一个像这样的项目结构:
+-- node_modules
+-- package-lock.json
+-- package.json
`-- workspace-a
`-- package.json <---includes common as a dependency
`-- common
`-- package.json
Run Code Online (Sandbox Code Playgroud)
我有Dockerfile
如下:
FROM node:alpine as builder
# from monorepo root
WORKDIR /app
COPY ./package*.json ./
COPY ./common/package*.json ./common/
COPY ./workspace-a/package*.json ./workspace-a/
RUN npm config set optional
RUN npm i
# build common library
WORKDIR /app/common
COPY ./common ./
RUN npm run build
# build workspace-a using built common library as dependency
WORKDIR /app/workspace-a
COPY ./auth ./
CMD ["npm","run", "build"]
FROM node:alpine
ENV CI=true
WORKDIR /app
COPY --from=builder /app/workspace-a/build .
COPY ./workspace-a/package*.json .
# RUN npm i --only=prod <--- this step will complain about "common" not being available, but added it just to try it
CMD ["npm","start"]
Run Code Online (Sandbox Code Playgroud)
我想知道如何避免将 复制到将使用它node_modules
的每个容器,我相信这是所有依赖项的一个巨大的综合文件夹,消除了子模块拥有自己单独的文件夹的需要node_modules
。例如,我计划workspace-b
最终添加一个,它也将有自己的Dockerfile
,或多或少与workspace-a
上面所示的相同。
090*_*9EM -5
如果您想在执行此操作时停止node_modules
复制文件夹
COPY ./common ./
Run Code Online (Sandbox Code Playgroud)
然后你想要一个.dockerignore
包含 docker 应忽略的目录的文件,在这种情况下该文件将只包含:
node_modules
Run Code Online (Sandbox Code Playgroud)
请参阅此页面了解信息
归档时间: |
|
查看次数: |
4670 次 |
最近记录: |