VUE?項(xiàng)目如何使用?Docker+Nginx進(jìn)行打包部署
一、Docker
- Docker 是一個(gè)容器化平臺(tái),允許你將應(yīng)用程序及其依賴項(xiàng)打包在容器中。
- 使用 Docker,你可以創(chuàng)建一個(gè)包含 Vue.js 應(yīng)用程序的容器鏡像,并在任何支持 Docker 的環(huán)境中運(yùn)行該鏡像。
二、Nginx
- Nginx 是一個(gè)高性能的 HTTP 服務(wù)器和反向代理服務(wù)器,廣泛用于提供靜態(tài)文件和路由請(qǐng)求到后端服務(wù)。
- 在 Vue.js 應(yīng)用程序的部署中,Nginx 可以用于:
- 作為靜態(tài)文件服務(wù)器,提供構(gòu)建后的 Vue.js 應(yīng)用程序文件。
- 作為反向代理,將 API 請(qǐng)求轉(zhuǎn)發(fā)到后端服務(wù)器。
三、Docker Nginx配置到vue--項(xiàng)目中使用
1. VUE 項(xiàng)目創(chuàng)建文件Dockerfile-private
FROM nginx:1.19.3 COPY dist/ /usr/share/nginx/html COPY ./nginx/nginx.conf /etc/nginx/nginx.conf COPY ./nginx/private/default.conf /etc/nginx/conf.d/default.conf
FROM nginx:1.19.3
:指定基礎(chǔ)鏡像,這里使用的是 Nginx 的官方鏡像,標(biāo)簽為 1.19.3
。
COPY dist/ /usr/share/nginx/html
:將 Vue 項(xiàng)目構(gòu)建輸出的 dist
目錄中的所有文件復(fù)制到 Nginx 的默認(rèn)網(wǎng)頁(yè)根目錄 /usr/share/nginx/html
。這意味著當(dāng)你訪問(wèn) Nginx 服務(wù)器時(shí),這些靜態(tài)文件將被提供給客戶端。
COPY ./nginx/nginx.conf /etc/nginx/nginx.conf
:復(fù)制自定義的 Nginx 主配置文件 nginx.conf
到容器中的 /etc/nginx/nginx.conf
。這將覆蓋默認(rèn)的 Nginx 配置。
COPY ./nginx/private/default.conf /etc/nginx/conf.d/default.conf
:復(fù)制自定義的 Nginx 配置文件 default.conf
到 Nginx 配置目錄 /etc/nginx/conf.d/
。這個(gè)文件將被 Nginx 加載以配置網(wǎng)站的行為,例如設(shè)置代理、重定向等。
Nginx文件:
nginx.conf文件
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" "$request_body"' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; gzip on; include /etc/nginx/conf.d/*.conf; }
nginx/private/default.conf
server { listen 8002; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/host.access.log main; gzip_static on; gzip on; gzip_min_length 1k; gzip_comp_level 3; gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/vnd.ms-fontobject font/ttf font/opentype font/x-woff image/svg+xml; gzip_vary on; gzip_disable "MSIE [1-6]\."; gzip_buffers 32 4k; fastcgi_intercept_errors on; server_tokens off; client_max_body_size 102400m; resolver 114.114.114.114 8.8.8.8 valid=120s; set $sentry router.anban.cloud; location / { add_header Cache-Control no-cache; root /usr/share/nginx/html; index index.html index.htm; try_files $uri /index.html; } location /abfuzz { proxy_read_timeout 100s; proxy_pass http://127.0.0.1:18800; } location /files { rewrite ^/files(.*)$ $1 break; proxy_pass http://127.0.0.1:18800; proxy_http_version 1.1; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } error_page 403 404 408 500 501 502 503 504 507 /index.html; }
四、構(gòu)建鏡像并運(yùn)行:
構(gòu)建鏡像:
docker build --platform linux/amd64 -f Dockerfile-private -t myapp .
docker build
:Docker 構(gòu)建命令,用于根據(jù)Dockerfile
創(chuàng)建一個(gè)新的鏡像。--platform linux/amd64
:指定構(gòu)建的目標(biāo)平臺(tái)為 Linux 架構(gòu)的 amd64(64位)。-f Dockerfile-private
:指定使用Dockerfile-private
作為構(gòu)建上下文的 Dockerfile。這表明你的構(gòu)建配置可能在Dockerfile-private
文件中定義,而不是默認(rèn)的Dockerfile
。-t myapp
:給構(gòu)建的鏡像指定一個(gè)標(biāo)簽(tag),這里標(biāo)簽是myapp
,這樣你就可以通過(guò)這個(gè)名稱來(lái)引用鏡像。.
(點(diǎn)):表示 Docker
運(yùn)行鏡像:
docker run -d -p 3000:8002 --name vue-app-container myapp
docker run
:Docker 運(yùn)行命令,用于從鏡像創(chuàng)建并啟動(dòng)一個(gè)新的容器。-d
:以分離模式運(yùn)行容器,在后臺(tái)運(yùn)行。-p 8002:8002
:端口映射,將容器內(nèi)部的 8002 端口映射到宿主機(jī)的 8002 端口。--name vue-app-container
:為容器指定一個(gè)名稱vue-app-container
,方便后續(xù)管理和引用。myapp
:指定要運(yùn)行的鏡像的名稱或標(biāo)簽,這里使用了之前構(gòu)建的myap
鏡像
查看鏡像運(yùn)行:
docker ps
運(yùn)行正常,直接訪問(wèn)地址: http://localhost:8002/
docker常用命令:
要中止正在運(yùn)行的容器并重新運(yùn)行它,你可以按照以下步驟操作:
找到容器 ID 或名稱: 首先,你需要找到容器的 ID 或名稱。你可以使用 docker ps
命令列出所有正在運(yùn)行的容器。
docker ps
停止容器: 使用 docker stop
命令加上容器的 ID 或名稱來(lái)停止容器。
docker stop <容器名稱或ID>
如果你為容器指定了名稱(在這個(gè)例子中是 vue-app-container
),你可以直接使用名稱來(lái)停止它:
docker stop vue-app-container
啟動(dòng)容器: 在停止了容器之后,你可以使用 docker run
命令重新啟動(dòng)它,這次使用正確的端口映射。如果 Nginx 配置為監(jiān)聽(tīng) 8002
端口,你需要確保 Docker 容器的端口映射也相應(yīng)地設(shè)置為 8002
。
docker run -d -p 8002:8002 --name my-nginx-container my-nginx-image
這個(gè)命令將容器內(nèi)部的 8002
端口映射到宿主機(jī)的 8002
端口,并以分離模式啟動(dòng)容器。
驗(yàn)證容器狀態(tài): docker ps
來(lái)檢查容器是否成功啟動(dòng)。
五、基礎(chǔ)配置demo(Dockerfile和nginx/default.conf)
剛才第三點(diǎn),是我項(xiàng)目中使用的配置,下面是一個(gè)很基礎(chǔ)的配置,可以直粘貼代碼使用
dockerfile文件
FROM nginx:1.19.3 COPY dist/ /usr/share/nginx/html COPY ./nginx/default.conf /etc/nginx/default.conf
nignx/default.conf
server { listen 80; server_name localhost; #charset koi8-r; access_log /var/log/nginx/host.access.log main; error_log /var/log/nginx/error.log error; location / { root /usr/share/nginx/html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location /abfuzz { proxy_read_timeout 100s; proxy_pass http://127.0.0.1:18800; } }
構(gòu)建鏡像:
docker build --platform linux/amd64 -f Dockerfile -t test1 .
運(yùn)行鏡像:
docker run -d -p 3000:80 --name test1-container test1
查看鏡像狀態(tài):
docker ps
訪問(wèn)地址:http://localhost:3000/
到此這篇關(guān)于VUE 項(xiàng)目用 Docker+Nginx進(jìn)行打包部署的文章就介紹到這了,更多相關(guān)docker nginx打包部署vue項(xiàng)目?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解vue-router數(shù)據(jù)加載與緩存使用總結(jié)
這篇文章主要介紹了詳解vue-router數(shù)據(jù)加載與緩存使用總結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10Vue中對(duì)象數(shù)組改變其對(duì)象內(nèi)容值數(shù)組沒(méi)變化的原因與解決方案
最近開(kāi)發(fā)遇到一個(gè)問(wèn)題,修改對(duì)象某一個(gè)索引對(duì)象時(shí),直接將對(duì)象賦值給數(shù)組的某一索引對(duì)象,該數(shù)組沒(méi)變化,在 Vue 中,直接修改對(duì)象數(shù)組中某個(gè)對(duì)象的屬性值時(shí),數(shù)組的引用本身未改變,本文介紹了詳細(xì)的原理分析和解決方案,需要的朋友可以參考下2025-03-03vue如何封裝自己的Svg圖標(biāo)組件庫(kù)(svg-sprite-loader)
這篇文章主要介紹了vue如何封裝自己的Svg圖標(biāo)組件庫(kù)(svg-sprite-loader),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04Vue 數(shù)組和對(duì)象更新,但是頁(yè)面沒(méi)有刷新的解決方式
今天小編就為大家分享一篇Vue 數(shù)組和對(duì)象更新,但是頁(yè)面沒(méi)有刷新的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11Vue3使用hooks解決字典數(shù)據(jù)的顯示問(wèn)題
我們?cè)谑褂?nbsp;element-plus的時(shí)候,經(jīng)常會(huì)使用一些字典數(shù)據(jù), 在搜索框的時(shí)候,字典數(shù)數(shù)要使用 el-select el-option 來(lái)顯示,但是經(jīng)常會(huì)遇到字典數(shù)據(jù)的顯示問(wèn)題,所以本文給大家介紹了Vue3使用hooks解決字典數(shù)據(jù)的顯示問(wèn)題,需要的朋友可以參考下2024-12-12vue中關(guān)于element的el-image 圖片預(yù)覽功能增加一個(gè)下載按鈕(操作方法)
這篇文章主要介紹了vue中關(guān)于element的el-image 圖片預(yù)覽功能增加一個(gè)下載按鈕,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04vue2+tracking實(shí)現(xiàn)PC端的人臉識(shí)別示例
本文主要介紹了vue2+tracking實(shí)現(xiàn)PC端的人臉識(shí)別示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05解決Vue_localStorage本地存儲(chǔ)和本地取值問(wèn)題
這篇文章主要介紹了解決Vue_localStorage本地存儲(chǔ)和本地取值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07vue項(xiàng)目安裝scss常見(jiàn)報(bào)錯(cuò)處理方式
這篇文章主要介紹了vue項(xiàng)目安裝scss常見(jiàn)報(bào)錯(cuò)處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09