前端Vue3項目如何打包成Docker鏡像運行

將前端Vue3項目打包成Docker鏡像并運行包括幾個主要步驟:項目打包、編寫Dockerfile、構建鏡像和運行容器。下面是一個基本的流程:

1. 項目打包

首先,確保你的Vue3項目可以正常運行和打包。在項目根目錄下執行以下命令來打包你的Vue3項目:

npm run build

這會創建一個dist/目錄,里面包含了用于生產環境的靜態文件。

2. 編寫Dockerfile

在你的Vue3項目根目錄下創建一個名為Dockerfile的文件,沒有文件后綴。這個文件用于定義如何構建Docker鏡像。以下是一個簡單的Dockerfile示例,它使用Nginx作為服務器來運行你的Vue3應用:

# 使用官方Nginx鏡像作為基礎鏡像
FROM nginx:alpine# 將dist目錄下的文件復制到容器中的/usr/share/nginx/html目錄下
COPY dist/ /usr/share/nginx/html/# 暴露80端口
EXPOSE 80# 使用Nginx運行Vue應用
CMD ["nginx", "-g", "daemon off;"]

這個Dockerfile做了以下幾件事:

  • 從Docker Hub拉取輕量級的nginx:alpine鏡像作為基礎鏡像。
  • 將打包后的Vue3項目(dist/目錄下的文件)復制到Nginx容器的靜態文件目錄下。
  • 暴露容器的80端口,以便外部訪問。
  • 運行Nginx服務器。

3. 構建Docker鏡像

在包含Dockerfile的目錄下,執行以下命令來構建Docker鏡像。這里<your-image-name>是你給鏡像起的名字:

docker build -t <your-image-name> .

4. 運行Docker容器

構建完成后,你可以使用以下命令來運行你的Vue3應用的Docker容器:

docker run -d -p 8080:80 <your-image-name>

這個命令會啟動一個容器,并將容器的80端口映射到宿主機的8080端口上。這樣,你就可以通過訪問宿主機的8080端口來訪問你的Vue3應用了。

修改自定義接口

如果你的Dockerfile中已經將暴露的端口設置為28888,而且在運行容器時也使用了這個端口,但是無法通過IP訪問應用,存在以下幾個問題:

1. Nginx配置未指定監聽28888端口

雖然你在Dockerfile中使用EXPOSE 28888指令來暴露了28888端口,但這只是Docker的一個聲明,實際上并不會改變Nginx的默認配置。Nginx默認監聽80端口,如果你想讓它監聽28888端口,你需要修改Nginx的配置文件。

解決方案:
  • 創建一個nginx.conf文件(或者一個site-specific的配置文件),并確保配置了正確的監聽端口,例如:
server {listen 28888;location / {root   /usr/share/nginx/html;index  index.html index.htm;}
}
  • 修改你的Dockerfile,將這個配置文件復制到Nginx的配置目錄中:
COPY nginx.conf /etc/nginx/conf.d/default.conf

2. 容器端口映射錯誤

確保你在運行容器時,端口映射是正確的。你提到已經使用了28888端口,但是確認一下是否正確使用了-p參數來映射端口,例如:

docker run -d -p 28888:28888 yixiao-blog-1.0.0

這條命令會將宿主機的28888端口映射到容器的28888端口上。

3. 防火墻/網絡配置問題

如果你的服務器或宿主機有防火墻或者網絡安全組規則,確保28888端口是開放的,允許外部訪問。

解決方案:
  • 根據你的操作系統或云服務提供商的文檔,檢查并修改防火墻規則。

4. 容器內Nginx服務未正確啟動

雖然看起來容器正在運行,但有可能是Nginx沒有按預期啟動。可以查看容器的日志來確認:

docker logs <容器ID或名稱>

重新配置docker打包文件然后執行build命令,大鏡像運行即可~

最后博主最近在打造自己的網站歡迎查看雛形~

總結

以上步驟展示了如何將一個Vue3項目打包成Docker鏡像并運行。這只是一個基本的流程,根據你的具體需求,可能還需要對Dockerfile進行相應的調整。
在這里插入圖片描述

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

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

相關文章

nest.js使用nest-winston日志一

nest-winston文檔 nest-winston - npm 參考&#xff1a;nestjs中winston日志模塊使用 - 浮的blog - SegmentFault 思否 安裝 cnpm install --save nest-winston winstoncnpm install winston-daily-rotate-file 在main.ts中 import { NestFactory } from nestjs/core; im…

【5G 接口協議】GTP-U協議介紹

博主未授權任何人或組織機構轉載博主任何原創文章&#xff0c;感謝各位對原創的支持&#xff01; 博主鏈接 本人就職于國際知名終端廠商&#xff0c;負責modem芯片研發。 在5G早期負責終端數據業務層、核心網相關的開發工作&#xff0c;目前牽頭6G算力網絡技術標準研究。 博客…

mysql學習

查看glibc版本 ldd --version --mysql啟動失敗,嘗試啟動 1 查看錯誤日志,端口被占用,參數名寫錯,有不支持的參數 2 通過mysqld啟動 mysqld --default-filemy.cnf & 3 mysqld --no-defaults --basedir/user/local/mysql --datadir/data/mysql/3306/data/ --usermysql 4 str…

深入理解 Nginx 的負載均衡與反向代理

深入理解 Nginx 的負載均衡與反向代理 Nginx 是一個高性能的 HTTP 和反向代理服務器&#xff0c;也是一個 IMAP/POP3/SMTP 代理服務器。由于其出色的性能和靈活性&#xff0c;Nginx 已成為現代 web 架構中的重要組成部分&#xff0c;尤其是在處理高并發連接和大規模流量時。在…

找到數組的中間位置-1991-[簡單]

力扣 關鍵點 從題目中總結出公式 sum * 2 nums[i] total從左往右開始嘗試&#xff0c;尋找 i 位置滿足上面的公式&#xff0c;為什么從左開始&#xff0c;因為題目要求找到最左邊的一個用前綴和的概念來解&#xff0c;從左往右嘗試i位置的左邊所有數之和&#xff0c;右邊所有…

基礎小白快速入門Python------>模塊的作用和意義

模塊&#xff0c; 這個詞聽起來是如此的高大威猛&#xff0c;以至于萌新小白見了瑟瑟發抖&#xff0c;本草履蟲見了都直搖頭&#xff0c;好像聽上去很難的樣子&#xff0c;但是但是&#xff0c;年輕人&#xff0c;請聽本少年細細講述&#xff0c;他只是看起來很難&#xff0c;實…

GO-接口

1. 接口 在Go語言中接口&#xff08;interface&#xff09;是一種類型&#xff0c;一種抽象的類型。 interface是一組method的集合&#xff0c;接口做的事情就像是定義一個協議&#xff08;規則&#xff09;&#xff0c;只要一臺機器有洗衣服和甩干的功能&#xff0c;我就稱它…

【go語言開發】swagger安裝和使用

本文主要介紹go-swagger的安裝和使用&#xff0c;首先介紹如何安裝swagger&#xff0c;測試是否成功&#xff1b;然后列出常用的注釋和給出使用例子&#xff1b;最后生成接口文檔&#xff0c;并在瀏覽器上測試 文章目錄 安裝注釋說明常用注釋參考例子 文檔生成格式化文檔生成do…

C++從零開始的打怪升級之路(day39)

這是關于一個普通雙非本科大一學生的C的學習記錄貼 在此前&#xff0c;我學了一點點C語言還有簡單的數據結構&#xff0c;如果有小伙伴想和我一起學習的&#xff0c;可以私信我交流分享學習資料 那么開啟正題 今天分享的是關于模板的知識點 1.非類型模板參數 模板參數分為…

大模型生成,Open API調用

大模型是怎么生成結果的 通俗原理 其實&#xff0c;它只是根據上文&#xff0c;猜下一個詞&#xff08;的概率&#xff09;…… OpenAI 的接口名就叫【completion】&#xff0c;也證明了其只會【生成】的本質。 下面用程序演示【生成下一個字】。你可以自己修改 prompt 試試…

高并發下的 AtomicReference 性能陷阱

介紹 Java 提供了 AtomicInteger/AtomicLong 在并發編程里經常用到&#xff0c;它們封裝了對 int 和 long 的原子操作。 Java 還提供了 AtomicReference&#xff0c;用于對象引用做原子性的管理&#xff0c;比如 get、set、CAS。 一般情況下 AtomicInteger、AtomicLong 的性能…

mac新環境

1、maven 設置阿里云鏡像 打開Maven的settings.xml文件。找到<mirrors>標簽&#xff0c;如果沒有&#xff0c;可以手動添加。在<mirrors>標簽內部添加以下內容&#xff1a; <mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorO…

【C++】類的轉換函數

使用場景 C中當你創建了一個類&#xff0c;你想把這個類對象轉換成基本類型的函數。類對象->基本類型對象 原理 如下實例&#xff0c;設計一個分數類&#xff0c;實現分數轉換成double 浮點數的轉換函數。并在mian函數隱式調用。 #include<iostream> class Fractio…

6. 使用 Spring Boot進行開發(Developing with Spring Boot)

6. 使用 Spring Boot進行開發&#xff08;Developing with Spring Boot&#xff09; 本節詳細介紹了如何使用Spring Boot。它涵蓋考慮構建系統、自動配置以及如何運行應用程序等主題。我們還介紹一些 Spring Boot 最新做法。雖然 Spring Boot 沒有什么特別之處&#xff08;它只…

Java 接口和抽象類有何區別?

Java接口&#xff08;Interface&#xff09;和抽象類&#xff08;Abstract Class&#xff09;都是面向對象編程中用于實現多態和代碼復用的重要概念&#xff0c;但它們之間有幾個關鍵的區別&#xff1a; 1. **實例化**&#xff1a; - **接口**&#xff1a;不能被實例化。它…

【Spring連載】使用Spring Data訪問 MongoDB----對象映射之JSON Schema

【Spring連載】使用Spring Data訪問 MongoDB----對象映射之JSON Schema 一、生成Schema二、加密字段三、JSON Schema類型 從3.6版本開始&#xff0c;MongoDB支持根據提供的 JSON Schema驗證documents的集合。在創建集合時&#xff0c;可以定義schema本身以及驗證操作和級別&…

Python爬蟲Cookies 池的搭建

Cookies 池的搭建 很多時候&#xff0c;在爬取沒有登錄的情況下&#xff0c;我們也可以訪問一部分頁面或請求一些接口&#xff0c;因為畢竟網站本身需要做 SEO&#xff0c;不會對所有頁面都設置登錄限制。 但是&#xff0c;不登錄直接爬取會有一些弊端&#xff0c;弊端主要有…

南京師范大學計電院數據結構課設——排序算法

1 排序算法 1.1 題目要求 編程實現希爾、快速、堆排序、歸并排序算法。要求首先隨機產生10000個數據存入磁盤文件&#xff0c;然后讀入數據文件&#xff0c;分別采用不同的排序方法進行排序并將結果存入文件中。 1.2 算法思想描述 1.2.1 隨機數生成 當需要生成一系列隨機數…

windows 11 前后端項目部署

目錄 1.準備環境&#xff1a; 2.安裝jdk 測試&#xff1a;winr 輸入cmd 3.安裝tomcat 4.安裝mysql 遠程導入數據&#xff1a; 外部后臺訪問&#xff1a;192.168.232.1:8080/crm/sys/loginAction.action?usernamezs&password123 5.安裝nginx 前后端部署&#xff1…

qsort函數的模擬實現(冒泡排序模擬)

冒泡排序&#xff1a; 從第一個元素開始&#xff0c;依次比較相鄰的兩個元素&#xff0c;如果順序不對就交換它們。 經過一輪遍歷后&#xff0c;最大&#xff08;或最小&#xff09;的元素會排在最后。 重復進行上述步驟&#xff0c;直到沒有任何元素需要交換&#xff0c;即…