【问题标题】:Docker: node_modules symlink not working for typescriptDocker:node_modules 符号链接不适用于打字稿
【发布时间】: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


【解决方案1】:

您的第一个代码部分暗示您使用 docker-compose。可能(Dockerfile 的)构建也在那里完成。

关键是 docker-compose 中的卷映射在同一 Docker 服务的构建阶段不可用。

【讨论】:

  • 我也在从 docker-compose 命令创建符号链接,这也不起作用
猜你喜欢
  • 2017-10-25
  • 2017-03-19
  • 2021-12-20
  • 2021-10-30
  • 1970-01-01
  • 1970-01-01
  • 2021-10-31
  • 1970-01-01
  • 2018-10-04
相关资源
最近更新 更多