所以我的NodeJS项目有以下Dockerfile:
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 80/tcp
CMD ["npm", "start"]
到目前为止还不错。Docker构建成功运行,但当我尝试运行容器时,我会得到以下结果:
$ docker run myContainer
backend@1.0.0 start
node src/index.js
linux is NOT supported. <----- THIS right here... ??
我如何才能了解更多有关此方面的信息?没有堆栈跟踪,没有信息或任何东西可以从这里继续。。。
我已经尝试过的:
- 我在Dockerfile中尝试了不同的基本映像,结果相同
- 我的本地机器是Windows,所以我尝试将docker切换到linux容器,但没有任何效果
- 我还在Debian上把它部署到GCP。同样的结果
感谢
找到了解决方案,它实际上位于我的一个依赖项上。如果有人有类似的问题,你可以"grep";nodemodule文件夹中的消息,以查找消息的来源。
您可以通过docker logs myContainer
检查日志以查看是否有更多信息
如果日志没有帮助,您可以尝试使用不同版本的NodeJS运行容器。您可以通过在Dockerfile中指定版本来做到这一点,如下所示:
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 80/tcp
CMD ["npm", "start"]
我最后要说的是尝试用不同的Linux发行版运行容器。您可以使用FROM指令在Dockerfile中指定Linux发行版,如下所示:FROM ubuntu:latest