繁体   English   中英

nodemon 在 kubernetes 环境中运行时未启动

[英]nodemon not starting when run in kubernetes environment

我正在容器化一个要在 GKE 上运行的 nodejs 应用程序。 package.json 的脚本部分看起来像这样

  "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

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 中运行时,standerout 日志显示没有错误(启用详细输出)

[nodemon] Looking in package.json for nodemonConfig
  Usage: nodemon [nodemon options] [script.js] [args]

  See "nodemon --help" for more.

[nodemon] exiting

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

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

所以我所做的是通过运行在 docker 文件中添加构建步骤

npm run dev

然后在 CMD 上添加

npm run prod:server

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

这是已更改的 dockerfile 部分。

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 因为它不需要。 因为文件无论如何都不会改变,而且它们太庞大了

  "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"
  },

最后.. !! 中提琴……它奏效了。

感谢所有投入宝贵时间的人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM