[英]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.