使用Docker創建并運行一個create-react-app應用(超簡單)

創建并運行一個使用 Create React App (CRA) 創建的應用程序的 Docker 容器涉及幾個步驟。以下是一個詳細的過程,包括創建一個簡單的 React 應用、編寫 Dockerfile、構建鏡像以及運行容器。

步驟 1: 創建一個新的 React 應用

如果你還沒有一個 React 應用,可以使用 Create React App 快速創建一個:

npx create-react-app my-react-app
cd my-react-app

步驟 2: 添加 Dockerfile

在你的 React 應用根目錄中創建一個名為 Dockerfile 的文件,沒有文件擴展名。添加以下內容到你的 Dockerfile 中:

# 使用官方 Node.js 作為構建環境
FROM node:14 AS build# 設置工作目錄
WORKDIR /app# 復制 package.json 和 yarn.lock 文件
# 如果不是使用 yarn 進行包管理,去掉 yarn.lock 即可
COPY package.json yarn.lock ./# 安裝項目依賴
RUN yarn install# 復制項目文件
COPY . .# 構建應用
RUN yarn build# 運行環境使用 nginx
FROM nginx:stable-alpine# 從構建階段復制構建產物到 nginx 目錄
COPY --from=build /app/build /usr/share/nginx/html# 暴露 80 端口
EXPOSE 80# 啟動 nginx
CMD ["nginx", "-g", "daemon off;"]

這個 Dockerfile 使用了多階段構建:第一階段使用 Node.js 鏡像構建 React 應用,第二階段使用 nginx 鏡像來服務構建產物。

步驟 3: 構建 Docker 鏡像

在你的應用根目錄下,運行以下命令來構建 Docker 鏡像:

docker run -d -p 8080:80 my-react-app

這個命令會在后臺運行一個新的容器實例,將容器的 80 端口映射到宿主機的 8080 端口。

步驟 5: 訪問應用

現在,你可以通過瀏覽器訪問 http://localhost:8080 來查看你的 React 應用了。

這個過程概述了如何使用 Docker 容器化一個簡單的 React 應用。你可以根據需要調整 Dockerfile 中的指令,例如使用不同的基礎鏡像或暴露不同的端口。

如果在 Docker 容器內部安裝了 Nginx,宿主機就不需要再安裝 Nginx。容器技術旨在將應用及其依賴打包在一起,從而實現應用的隔離和移植性。因此,只要容器正在運行,并且你已經正確配置了容器內的 Nginx 以及容器和宿主機之間的網絡(例如,通過端口映射),你就可以直接使用容器內的 Nginx,無需在宿主機上安裝相同的服務。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/45715.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45715.shtml
英文地址,請注明出處:http://en.pswp.cn/web/45715.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java爬蟲安全策略:防止TikTok音頻抓取過程中的請求被攔截

摘要 在當今互聯網時代,數據采集已成為獲取信息的重要手段。然而,隨著反爬蟲技術的不斷進步,爬蟲開發者面臨著越來越多的挑戰。本文將探討Java爬蟲在抓取TikTok音頻時的安全策略,包括如何防止請求被攔截,以及如何提高…

RK3568 安卓12 EC20模塊NOCONN沒有ip的問題(已解決)

從網上東拼西湊找了不少教程,但是里面沒有提到rillib.so需要替換,替換掉就可以上網了,系統也有4G圖標了。 注意,這個rillib.so是移遠提供的。把他們提供的文件放到rk3568_android_sdk/vendor/rockchip/common/phone/lib下&#x…

Andriod Stdio新建Kotlin的Jetpack Compose簡單項目

1.選擇 No Activity 2.選擇kotlin 4.右鍵選擇 在目錄MyApplication下 New->Compose->Empty Project 出現下面的畫面 Finish 完成

C++——類和對象(中)

文章目錄 一、類的默認成員函數二、構造函數三、析構函數四、拷?構造函數五、賦值運算符重載1. 運算符重載2. 賦值運算符重載 六、取地址運算符重載const成員函數取地址運算符重載 七、應用:?期類實現Date.hDate.cpptest.cpp 一、類的默認成員函數 默認成員函數就…

技術成神之路:設計模式(七)狀態模式

1.介紹 狀態模式(State Pattern)是一種行為設計模式,它允許一個對象在其內部狀態改變時改變其行為。這個模式將狀態的相關行為封裝在獨立的狀態類中,并將不同狀態之間的轉換邏輯分離開來。 2.主要作用 狀態模式的主要作用是讓一個…

數據結構—鏈式二叉樹-C語言

代碼位置:test-c-2024: 對C語言習題代碼的練習 (gitee.com) 一、前言: 在現實中搜索二叉樹為常用的二叉樹之一,今天我們就要通過鏈表來實現搜索二叉樹。實現的操作有:建二叉樹、前序遍歷、中序遍歷、后序遍歷、求樹的節點個數、求…

SMU Summer 2024 Contest Round 4

SMU Summer 2024 Contest Round 4 2024.7.16 9:00————11:00 過題數3/7 補題數6/7 Made Up H and V Moving Piece Sum of Divisors Red and Green Apples Rem of Sum is Num Keep Connect A - Made Up 題解: 給定三個數組a,b,c&#xf…

MySQL日期和時間相關函數

目錄 1. 獲取當前時間和日期 2. 獲取當前日期 3. 獲取當前時間 4. 獲取單獨的年/月/日/時/分/秒 5. 添加時間間隔 date_add ( ) 6. 格式化日期 date_format ( ) 7. 字符串轉日期 str_to_date () 8. 第幾天 dayofxx 9. 當月最后一天 last_day ( ) 10. 日期差 datedif…

H. Beppa and SwerChat【雙指針】

思路分析&#xff1a;運用雙指針從后往前掃一遍&#xff0c;兩次分別記作數組a&#xff0c;b&#xff0c;分別使用雙指針i和j來掃&#xff0c;如果一樣就往前&#xff0c;如果不一樣&#xff0c;i–,ans #include<iostream> #include<cstring> #include<string…

SQL server 練習題2

課后作業 作業 1&#xff1a;自己查找方法&#xff0c;將 homework_1.xls 文件數據導入到 SQLServer 的 homework 數據庫中。數據導入完成后&#xff0c;把表名統一改為&#xff1a;外賣表 如下所示&#xff1a; 作業 2&#xff1a;找出所有在 2020 年 5 月 1 日至 5 月 31 …

Zookeeper之CAP理論及分布式一致性算法

CAP理論 CAP理論告訴我們&#xff0c;一個分布式系統不可能同時滿足以下三種 一致性&#xff08;C:consistency&#xff09;可用性&#xff08;A:Available&#xff09;分區容錯性&#xff08;P:Partition Tolerance&#xff09; 這三個基本要求&#xff0c;最多只能同時滿足…

python 語法學習 day2

python有七大數據類型, 數據類型轉換, 多變量賦值與print間隔, split函數, int用法總結python有七大數據類型&#xff1a; &#xff08;1&#xff09;數字&#xff08;Number&#xff09;&#xff1a;int(整型&#xff0c;長整型)&#xff0c;float(浮點型)&#xff0c;com…

部署k8s 1.28.9版本

繼上篇通過vagrant與virtualBox實現虛擬機的安裝。筆者已經將原有的vmware版本的虛擬機卸載掉了。這個場景下&#xff0c;需要重新安裝k8s 相關組件。由于之前寫的一篇文章本身也沒有截圖。只有命令。所以趁著現在。寫一篇&#xff0c;完整版帶截圖的步驟。現在行業這么卷。離…

SpringBoot中常用的注解及其用法

1. 常用類注解 RestController和Controller是Spring中用于定義控制器的兩個類注解. 1.1 RestController RestController是一個組合類注解,是Controller和ResponseBody兩個注解的組合,在使 用 RestController 注解標記的類中&#xff0c;每個方法的返回值都會以 JSON 或 XML…

【Android安全】Ubuntu 下載、編譯 、刷入Android-8.1.0_r1

0. 環境準備 Ubuntu 16.04 LTS&#xff08;預留至少95GB磁盤空間&#xff0c;實測占94.2GB&#xff09; Pixel 2 XL 要買歐版的&#xff0c;不要美版的。 歐版能解鎖BootLoader、能刷機。 美版IMEI里一般帶“v”或者"version"&#xff0c;這樣不能解鎖BootLoader、…

網絡安全-網絡安全及其防護措施2

6.安全設計和日志 安全審計 安全審計是對系統和網絡活動進行檢查和記錄的過程&#xff0c;確保合規性和安全性。審計過程可以幫助發現潛在的安全漏洞和違規行為&#xff0c;并驗證系統配置和操作的正確性。 定期審計 定義&#xff1a;定期檢查系統和網絡的安全配置和活動記錄…

394. 字符串解碼 739. 每日溫度(LeetCode熱題100)

394. 字符串解碼 - 力扣&#xff08;LeetCode&#xff09; curr_str&#xff1a;遍歷整個字符串時 如果左邊有[&#xff0c;且無相應右括號和其匹配&#xff0c;那么curr_str就表示該[到當前位置的解碼字符串如果左邊的[]已經匹配&#xff0c;或者沒有[]&#xff0c;curr_siz…

找不到vcruntime140_1.dll 無法執行的相關解決方法,如何高效率修復vcruntime140_1.dll

當出現“找不到 vcruntime140_1.dll 無法執行”這類提示時&#xff0c;意味著你的系統中的 vcruntime140_1.dll 文件已經缺失或者損壞。為了恢復并正常啟動你的程序&#xff0c;你需要對這個 DLL 文件進行修復。接下來&#xff0c;我們將詳細介紹如何進行這一操作。 一.找不到v…

數學建模·層次分析法

層次分析法 LAF 定義 評價體系的優劣影響&#xff0c;計算評價指標的權重的一種方法 主觀性較強&#xff0c;現在一般不用 主要步驟 關鍵在于一致性檢驗和求權值 權重的計算 注意權重之和為1&#xff0c;需要歸一化 算數平均法 特征值法 矩陣的一致性檢驗 為什么要檢驗…

【C語言】原碼、反碼、補碼詳解 -《碼上有道 ! 》

目錄 原碼、反碼、補碼詳解及其在C語言中的應用一、原碼&#xff08;Sign-Magnitude&#xff09;1.1 定義與表示1.2 歷史來源與作用1.3 示例1.4 C語言示例1.5 代碼運行結果 二、反碼&#xff08;Ones Complement&#xff09;2.1 定義與表示2.2 歷史來源與作用2.3 示例2.4 C語言…