[英]Unable to deploy React Application to Kubernetes
我正在嘗試通過 Docker 將使用 Create-React App 創建的應用程序部署到 Kubernetes。 當 docker 文件嘗試使用 Jenkins 管道創建容器時,它失敗並顯示以下錯誤:“正在啟動開發服務器...
編譯失敗。
./src/index.js
Module not found: Can't resolve './App.js' in '/app/src'
文件夾結構與默認的“create-react app”文件夾結構完全相似。
下面還有 Dockerfile:
FROM node:10.6.0-jessie
# set working directory
RUN mkdir /app
WORKDIR /app
COPY . .
# add `/usr/src/app/node_modules/.bin` to $PATH
#ENV PATH /usr/src/app/node_modules/.bin:$PATH
RUN npm install
#RUN npm install react-scripts -g --silent
# start app
CMD ["npm", "start"]
我無法理解我可能出錯的地方。
所以任何幫助將不勝感激。
我能夠對 pod 內的容器執行 kubectl exec -it pod_name -- bash。 我發現由於某種原因“App.js”文件被復制到容器中作為“app.js”。 由於 linux 區分大小寫,因此無法找到該文件。 更改 index.js 中的 import 語句修復了問題。 但我仍然不知道是什么原因導致文件以小寫形式復制,因為在我的本地文件中,該文件以“App.js”的形式存在。
當您將部署過程調整為更適合生產的設置時,您遇到的問題將被忽略。
您目前正在做的是在每個 Kubernetes 節點上安裝所有(開發)依賴項,編譯您的應用程序,然后啟動開發網絡服務器。 這會使您部署的構建不一致並增加部署節點上的負載和膨脹。
相反,您想要做的是通過在構建機器上運行npm run build
來創建生產就緒構建,這將編譯您的應用程序並輸出到項目中的build
文件夾。 然后,您希望將此文件夾以.zip
文件的形式傳輸到您的服務器,這將需要安裝一個生產就緒的網絡服務器(強烈推薦 Nginx 和行業標准)來為您的構建中的靜態文件提供服務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.