【发布时间】:2021-09-03 15:36:31
【问题描述】:
我正在研究 TS 中 Express 应用的容器化。但无法链接安装在容器外的 node_modules。卷也已安装用于开发。但在编辑器(vscode)Cannot find module 'typeorm' or its corresponding type declarations. 中仍然出现错误,所有依赖项都类似。
volumes:
- .:/usr/src/app
Dockerfile:
FROM node:16.8.0-alpine3.13 as builder
WORKDIR /usr/src/app
COPY package.json .
COPY transformPackage.js .
RUN ["node", "transformPackage"]
FROM node:16.8.0-alpine3.13
WORKDIR /usr/src/app
COPY --from=builder /usr/src/app/package-docker.json package.json
RUN apk update && apk upgrade
RUN npm install --quiet && mv node_modules ../ && ln -sf ../node_modules node_modules
COPY . .
EXPOSE 3080
ENV NODE_PATH=./dist
RUN npm run build
CMD ["npm", "start"]
我有一个解决方法,我可以在本地安装依赖项,然后使用它们,但需要另一种解决方案,我们应该只在容器中而不是外部安装依赖项。
提前致谢。
【问题讨论】:
-
在这个(普通 Docker)设置中,你有一个两阶段构建,第一阶段在第二阶段运行之前以某种方式编译或转换源代码,你不能使用绑定安装以替换图像代码,因为这将隐藏转换后的文件。您应该能够完全删除该
volumes:块(并使用主机节点进程进行日常开发)。
标签: node.js typescript docker express