首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在kubernetes环境中运行时,nodemon无法启动

在kubernetes环境中运行时,nodemon无法启动
EN

Stack Overflow用户
提问于 2021-11-02 09:13:51
回答 1查看 114关注 0票数 0

我正在致力于将nodejs应用程序容器化,以便在GKE上运行。package.json的脚本部分如下所示

代码语言:javascript
复制
  "scripts": {
    "dev": "npm-run-all --parallel dev:build-server dev:build-client  dev:server",
    "dev:server": "nodemon -L --watch build --exec node build/bundle.js",
    "dev:build-server": "webpack --config webpack.server.js --watch",
    "dev:build-client": "webpack --config webpack.client.js --watch"
  }, 

因此,在运行im时,使用npm run dev来启动它们。

当它在VM上运行时,它可以完美地工作。但是,当在kubernetes中作为容器运行时,nodemon进程不会启动。它也不会监听端口。它在浏览器上显示502状态错误

但是,当您ssh到pod并尝试运行该命令时,它会在3001端口上启动process.listens,但显然它会给出浏览器上找不到的路由。因为它们没有像预期的那样链接在一起。

下面是dockerfile

代码语言:javascript
复制
FROM node:10.19-stretch
ENV USER="vue" UID="1001"


RUN apt-get update --fix-missing
RUN apt-get install -yq curl
RUN rm /bin/sh && ln -s /bin/bash /bin/sh && \
    mkdir -p /opt/vue && \
    addgroup --system -gid $UID $USER && \
    adduser --system --uid $UID --gid $UID $USER

WORKDIR /opt/vue

COPY dashboard/. /opt/vue/


RUN npm cache clean --force && \
    npm install  && \
    npm cache verify  && \
    chown $USER.$USER -R /opt/vue

USER $USER
EXPOSE 3001
# ENTRYPOINT ["/usr/bin/dumb-init","--"]
# CMD ["npm run dev"]
CMD ["npm", "run", "dev" ]

尝试使用基础镜像(node:10.19-stretch,node:10.19.0-alpine3.11),有些人建议安装inotify,但即使这样也不起作用。我错过了什么。请帮帮忙。

更新

当在docker或kubernetes标准输出日志中运行时,日志显示没有错误(启用详细输出)

代码语言:javascript
复制
[nodemon] Looking in package.json for nodemonConfig
  Usage: nodemon [nodemon options] [script.js] [args]

  See "nodemon --help" for more.

[nodemon] exiting
EN

回答 1

Stack Overflow用户

发布于 2021-11-12 09:08:44

经过同行评审并将其发布到其他网络后,找到了正确的答案。

背后的问题很明显。在脚本部分,所有的dev:*脚本都是并行运行的。因此,当两个构建步骤运行时,nodemon服务试图启动该服务。因为build/bundle.json不在那里,所以它给出了一个未找到的文件。但是nodemon认为它是无效参数,并提供命令帮助。

因此,我所做的就是通过运行以下命令在docker文件中添加构建步骤

代码语言:javascript
复制
npm run dev

然后在CMD上添加

代码语言:javascript
复制
npm run prod:server

这实际上也加快了启动时间。

下面是更改后的dockerfile部分。

代码语言:javascript
复制
RUN npm cache clean --force && \
    npm install  && \
    npm cache verify  && \
    chown $USER.$USER -R /opt/vue

USER $USER
EXPOSE 3001

CMD ["npm", "run", "prod:server" ]

此外,我已经删除了nodemon,因为它不需要。因为文件无论如何都不会更改,而且它们太大了

代码语言:javascript
复制
  "scripts": {
    "dev": "npm-run-all --parallel dev:build-server dev:build-client",
    "prod:server": "node build/bundle.js",
    "dev:build-server": "webpack --config webpack.server.js --watch",
    "dev:build-client": "webpack --config webpack.client.js --watch"
  },

终于..。!!维奥拉。啊,真灵。

感谢为此付出宝贵时间的每一个人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69807888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档