簡體   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