【发布时间】:2020-05-01 10:18:44
【问题描述】:
我正在创建一个 nodeJS Typescript 项目并尝试创建该项目的 docker 映像。该项目在本地成功编译,但是当我尝试构建 docker 映像(使用 docker build 或 docker-compose up)时,它失败了,因为它“找不到模块 x”。
奇怪的是,当我尝试将RUN npm ls <module> 添加到我的dockerfile 时,它显示模块已成功安装。我在这里看到了其他问题,包括删除 docker-compose 文件中的volume,但由于我的甚至没有它开始,我迷路了。
如果有帮助的话,我正在尝试在 Windows 机器上完成所有这些工作。
提前致谢!
docker-compose.yml
version: '3.4'
services:
app:
build: .
ports:
- "3001:3000"
image: app-nodejs
container_name: appnodejs
dockerfile
FROM node:lts-alpine
USER root
ENV PORT 3000
RUN npm install -g pm2 typescript
RUN mkdir -p /app
COPY . /app/
WORKDIR /app
RUN npm install
RUN npm run build
EXPOSE ${PORT}
CMD [ "pm2-runtime", "start", "/app/ecosystem.config.js" ]
编辑: 我忘了提到它在 npm run build 时失败了,但我所做的只是运行 tsc。我可以确认我的 tsconfig 已正确复制,因为它在我尝试编译时返回“找不到模块”错误
【问题讨论】:
-
尝试在 dockerfile 的 CMD 中给出 pm2-runtime 的绝对路径
-
对不起,我意识到我没有解释它失败的地方。它在 npm run build 时失败,但我在那里所做的只是使用 tsc。我可以确认我的 tsconfig 已正确复制,因为它无法编译并出现“找不到模块”错误
-
你也可以添加错误跟踪吗?
标签: node.js typescript docker npm docker-compose