VUE?項目如何使用?Docker+Nginx進行打包部署
一、Docker
- Docker 是一個容器化平臺,允許你將應用程序及其依賴項打包在容器中。
- 使用 Docker,你可以創(chuàng)建一個包含 Vue.js 應用程序的容器鏡像,并在任何支持 Docker 的環(huán)境中運行該鏡像。
二、Nginx
- Nginx 是一個高性能的 HTTP 服務器和反向代理服務器,廣泛用于提供靜態(tài)文件和路由請求到后端服務。
- 在 Vue.js 應用程序的部署中,Nginx 可以用于:
- 作為靜態(tài)文件服務器,提供構建后的 Vue.js 應用程序文件。
- 作為反向代理,將 API 請求轉(zhuǎn)發(fā)到后端服務器。
三、Docker Nginx配置到vue--項目中使用
1. VUE 項目創(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:指定基礎鏡像,這里使用的是 Nginx 的官方鏡像,標簽為 1.19.3。
COPY dist/ /usr/share/nginx/html:將 Vue 項目構建輸出的 dist 目錄中的所有文件復制到 Nginx 的默認網(wǎng)頁根目錄 /usr/share/nginx/html。這意味著當你訪問 Nginx 服務器時,這些靜態(tài)文件將被提供給客戶端。
COPY ./nginx/nginx.conf /etc/nginx/nginx.conf:復制自定義的 Nginx 主配置文件 nginx.conf 到容器中的 /etc/nginx/nginx.conf。這將覆蓋默認的 Nginx 配置。
COPY ./nginx/private/default.conf /etc/nginx/conf.d/default.conf:復制自定義的 Nginx 配置文件 default.conf 到 Nginx 配置目錄 /etc/nginx/conf.d/。這個文件將被 Nginx 加載以配置網(wǎng)站的行為,例如設置代理、重定向等。
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;
} 四、構建鏡像并運行:
構建鏡像:
docker build --platform linux/amd64 -f Dockerfile-private -t myapp .
docker build:Docker 構建命令,用于根據(jù)Dockerfile創(chuàng)建一個新的鏡像。--platform linux/amd64:指定構建的目標平臺為 Linux 架構的 amd64(64位)。-f Dockerfile-private:指定使用Dockerfile-private作為構建上下文的 Dockerfile。這表明你的構建配置可能在Dockerfile-private文件中定義,而不是默認的Dockerfile。-t myapp:給構建的鏡像指定一個標簽(tag),這里標簽是myapp,這樣你就可以通過這個名稱來引用鏡像。.(點):表示 Docker
運行鏡像:
docker run -d -p 3000:8002 --name vue-app-container myapp
docker run:Docker 運行命令,用于從鏡像創(chuàng)建并啟動一個新的容器。-d:以分離模式運行容器,在后臺運行。-p 8002:8002:端口映射,將容器內(nèi)部的 8002 端口映射到宿主機的 8002 端口。--name vue-app-container:為容器指定一個名稱vue-app-container,方便后續(xù)管理和引用。myapp:指定要運行的鏡像的名稱或標簽,這里使用了之前構建的myap鏡像
查看鏡像運行:
docker ps

運行正常,直接訪問地址: http://localhost:8002/

docker常用命令:
要中止正在運行的容器并重新運行它,你可以按照以下步驟操作:
找到容器 ID 或名稱: 首先,你需要找到容器的 ID 或名稱。你可以使用 docker ps 命令列出所有正在運行的容器。
docker ps
停止容器: 使用 docker stop 命令加上容器的 ID 或名稱來停止容器。
docker stop <容器名稱或ID>
如果你為容器指定了名稱(在這個例子中是 vue-app-container),你可以直接使用名稱來停止它:
docker stop vue-app-container
啟動容器: 在停止了容器之后,你可以使用 docker run 命令重新啟動它,這次使用正確的端口映射。如果 Nginx 配置為監(jiān)聽 8002 端口,你需要確保 Docker 容器的端口映射也相應地設置為 8002。
docker run -d -p 8002:8002 --name my-nginx-container my-nginx-image
這個命令將容器內(nèi)部的 8002 端口映射到宿主機的 8002 端口,并以分離模式啟動容器。
驗證容器狀態(tài): docker ps 來檢查容器是否成功啟動。
五、基礎配置demo(Dockerfile和nginx/default.conf)
剛才第三點,是我項目中使用的配置,下面是一個很基礎的配置,可以直粘貼代碼使用

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;
}
}構建鏡像:
docker build --platform linux/amd64 -f Dockerfile -t test1 .
運行鏡像:
docker run -d -p 3000:80 --name test1-container test1
查看鏡像狀態(tài):
docker ps
到此這篇關于VUE 項目用 Docker+Nginx進行打包部署的文章就介紹到這了,更多相關docker nginx打包部署vue項目內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
詳解vue-router數(shù)據(jù)加載與緩存使用總結(jié)
這篇文章主要介紹了詳解vue-router數(shù)據(jù)加載與緩存使用總結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-10-10
Vue中對象數(shù)組改變其對象內(nèi)容值數(shù)組沒變化的原因與解決方案
最近開發(fā)遇到一個問題,修改對象某一個索引對象時,直接將對象賦值給數(shù)組的某一索引對象,該數(shù)組沒變化,在 Vue 中,直接修改對象數(shù)組中某個對象的屬性值時,數(shù)組的引用本身未改變,本文介紹了詳細的原理分析和解決方案,需要的朋友可以參考下2025-03-03
vue如何封裝自己的Svg圖標組件庫(svg-sprite-loader)
這篇文章主要介紹了vue如何封裝自己的Svg圖標組件庫(svg-sprite-loader),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04
Vue 數(shù)組和對象更新,但是頁面沒有刷新的解決方式
今天小編就為大家分享一篇Vue 數(shù)組和對象更新,但是頁面沒有刷新的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
Vue3使用hooks解決字典數(shù)據(jù)的顯示問題
我們在使用 element-plus的時候,經(jīng)常會使用一些字典數(shù)據(jù), 在搜索框的時候,字典數(shù)數(shù)要使用 el-select el-option 來顯示,但是經(jīng)常會遇到字典數(shù)據(jù)的顯示問題,所以本文給大家介紹了Vue3使用hooks解決字典數(shù)據(jù)的顯示問題,需要的朋友可以參考下2024-12-12
vue中關于element的el-image 圖片預覽功能增加一個下載按鈕(操作方法)
這篇文章主要介紹了vue中關于element的el-image 圖片預覽功能增加一個下載按鈕,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04
vue2+tracking實現(xiàn)PC端的人臉識別示例
本文主要介紹了vue2+tracking實現(xiàn)PC端的人臉識別示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05

