簡體   English   中英

無法將 React 應用程序部署到 Kubernetes

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

我無法理解我可能出錯的地方。

編輯 1:我還想提一下,我可以使用此配置在本地計算機上運行 docker 容器。

所以任何幫助將不勝感激。

更新 1:

我能夠對 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM