以下是簡單的步驟,向您展示如何從空的 React 應用程式開始(使用create-react-app ),建立該應用程式的生產版本,然後在 Docker 容器中執行它。
讓我們先建立一個新的 React 應用程式:
npm install create-react-app --global
create-react-app react-docker-app
react-docker-app
資料夾並執行它,以確保一切正常:cd react-docker-app && yarn start
yarn start
指令編譯 React 應用程式並開啟瀏覽器。
現在我們已經執行了應用程式,讓我們在專案的根資料夾中建立一個Dockerfile
。以下是Dockerfile
的內容:
https://gist.github.com/peterj/286b537f7948c0762220d7a8c60821d1
在繼續之前,我們先解釋一下這個Dockerfile
中發生了什麼事。
第 1-4 行是建構的第一階段。在此階段,您將所有原始程式碼複製到容器並執行yarn run build
,以建立最佳化的生產建置。
第 6-10 行是建構的第二階段。安裝服務包並在第 9 行,將建置第一階段的輸出從資料夾/app/build
複製到容器中的目前資料夾( /app
- 這是由WORKDIR /app
指令設定的Dockerfile
)。
關於多階段建置:如果您想知道 Dockerfile 中的兩個 FROM 語句。這是因為您想使用多階段建置。在建置的第一階段,將原始程式碼複製到容器並執行建置命令。在第二個建置階段,您僅將建置的工件(HTML、JS...)複製到容器中。使用多階段建置會產生更小的 Docker 映像。範例中的第一個圖像約為 198MB,而第二個圖像只有 86.7MB。
在最後一行中,您執行serve
命令以在連接埠80
上提供目前資料夾的內容。
除了服務之外,你還可以使用 Nginx;但這可能需要更多配置。
若要建置映像,您可以從Dockerfile
所在的專案根資料夾執行以下命令:
docker build -t react-docker-app .
使用-t
指定圖像的名稱,使用.
您指定建置上下文(例如目前資料夾)。建置完成後,最後一行應如下所示:
Successfully tagged react-docker-app:latest
最後,讓我們現在執行這個容器。要在本地執行它,您需要提供映像的名稱以及我們希望可以存取 React 應用程式的連接埠。請注意,我們在服務命令中使用了連接埠80
,因此在指定容器連接埠時需要確保使用80
如下所示:
docker run -it -p 8080:80 react-docker-app
容器執行後,您可以開啟http://localhost:8080
,然後您將能夠存取在 Docker 容器內執行的 React 應用程式。
🔥 如果您想了解有關 Kubernetes、Istio、Docker 和雲原生的更多訊息,請查看我的《學習 Istio》電子書 📖。您可以在 👉 https://learnistio.com 👈 取得該書的免費預覽
原文出處:https://dev.to/peterj/run-a-react-app-in-a-docker-container-kjn