jenkins+docker+nginx+nodejs持續(xù)集成部署vue前端項目
最近比較閑,嘗試了一下docker部署業(yè)務測試環(huán)境的前端vue項目,作此記錄
這里我的環(huán)境是Jenkins+docker+harbor+nginx
部署,但是由于此項目以節(jié)點形式加入jenkins,構建和部署都在一臺,所以沒有用到harbor,但是生產環(huán)境可能部署和構建不在一臺,會需要先推送到harbor,也有詳細步驟。
前提:
1安裝好了jenkins, 2項目服務器以node形式加入Jenkins, 3項目節(jié)點安裝docker 4代碼里有包含Dockerfile
以及 nginx的相關配置文件
思路:
通過Jenkins拉去git倉庫代碼,利用nodejs打包編譯vue資源,利用Dockerfile
構建業(yè)務鏡像,提前準備好nginx的配置文件和自定義文件,上過上傳harbor供其他節(jié)點下載使用。
步驟:
創(chuàng)建自由風格的jobs(用流水線也可以),這里步驟比較簡單就不寫流水線了
general處選擇參數化構建 ,文本參數來定義每次構建的版本號
構建環(huán)境這里需要選擇全局工具里配置的nodejs,用于編譯打包vue
配置nodejs工具
(如下圖),自動安裝需要的版本即可。
??構建處選擇執(zhí)行shell
#!/bin/bash pwd npm install npm run build -- prerelease #編譯項目 echo "npm finish " echo $version docker build -t nginx-agent:$version . #部署和構建是一臺 docker images docker stop nginx-agent docker rm nginx-test docker run --name nginx-agent -p 8001:80 -d nginx-agent:$version #部署和構建不在一臺,或者多臺構建,harbor # docker tag nginx-agent:$version 192.168.80.133:8000/test/nginx-agent:$version # docker push 192.168.80.133:8000/test/nginx-agent:$version # ssh 192.168.80.** "docker pull 192.168.80.133:8000/test/nginx-agent:$version" # ssh 192.168.80.** "docker stop nginx-agent;docker rm nginx-agent;docker start " # ssh 192.168.80.** "docker run --name nginx-test -p 8001:80 -d 192.168.80.133:8000/test/nginx:$version"
我的環(huán)境是構建和部署都是在一臺服務器,所以這里我沒有用harbor,注釋部分的代碼段就是一個簡單的部署在另外服務器,
保存job,準備開始構建!
git代碼文件目錄如下
這里查看三個文件的內容
Dockerfile : 用于構建docker鏡像的文件
nginx.conf :用于替換鏡像內默認的主配置文件
default.conf :用于替換鏡像內默認的用戶配置文件
Dockerfile的文件內容
root@jenkins test-agent]# cat Dockerfile FROM nginx COPY ./dist/index.html /app/ COPY ./dist/static/js /app/static/js COPY ./dist/static/css /app/static/css COPY ./dist/static/fonts /app/static/fonts COPY ./dist/static/img /app/static/img COPY ./nginx.conf /etc/nginx/conf/nginx.conf COPY ./default.conf /etc/nginx/conf.d/default.conf EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
注意
這里如果你的前端文件也是區(qū)分目錄的話,需要一個個單獨步驟去復制,不然的話,docker的copy命令只會復制文件不會連同目錄一起復制,會導致你鏡像內的目錄結構不一樣,
nginx鏡像默認是有兩個文件,一個主配置文件nginx.conf 一個自定義配置文件default.conf
所以一般我們可以提前準備兩個對應的配置文件,主配置文件一般多數項目可以公用,自定義文件可以根據具體的前端項目需求來編寫,可能會涉及到server_name 和后端的轉發(fā),
nginx.conf主配置文件的內容
[root@jenkins docker]# cat nginx.conf user nginx; worker_processes auto; error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid; events { worker_connections 65535; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$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; }
default.conf自定義配置文件如下
[root@jenkins docker]# cat default.conf server { listen 80; server_name localhost; #如果有需要監(jiān)聽的域名,這里也需要修改 location / { root /app; try_files $uri $uri/ /index.html; index index.html index.htm; } location /api { if ($request_method = 'OPTIONS') { return 204; } rewrite ^/api/(.*)$ /$1 break; #后端接口域名,這里需要根據你自己的具體后端來填寫 proxy_pass https://*****.com/; }}
一切準備就緒,開始構建查看效果
構建輸出如下:
看輸出已經成功,登錄服務器查看是否有對應的鏡像和容器
[root@jenkins docker]# docker images REPOSITORY TAG IMAGE ID CREATED SI nginx-agent V4 af8b50d515f5 2 minutes ago 150MB 192.168.80.133:8000/test/nginx V3 19186858893b 22 hours ago 141MB
[root@jenkins docker]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8b3e8ae77b88 nginx-agent:V4 "/docker-entrypoint.…" 9 seconds ago Up 8 seconds 0.0.0.0:8001->80/tcp, :::8001->80/tcp nginx-agent
容器已經成功啟動,輸入地址訪問看是否正常
訪問正常,搞定!
到此這篇關于jenkins+docker+nginx+nodejs持續(xù)集成部署vue前端項目的文章就介紹到這了,更多相關jenkins docker nginx node部署vue內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
在Docker環(huán)境中部署和運行One API的操作方法
隨著技術的發(fā)展,API 作為服務連接的橋梁,變得越來越重要,One API 是一種流行的 API 管理平臺,能夠幫助我們更好地管理、監(jiān)控和擴展 API 服務,本文給大家介紹了如何在 Docker 環(huán)境中部署和運行 One API,需要的朋友可以參考下2024-11-11docker實現批量下載pull?k8s鏡像并打標簽tag、推送push至鏡像倉庫
這篇文章主要介紹了docker實現批量下載pull?k8s鏡像并打標簽tag、推送push至鏡像倉庫方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-05-05Spring Boot 打包上傳Docker 倉庫的詳細步驟
這篇文章主要介紹了Spring Boot 打包上傳Docker 倉庫的詳細步驟,本文分步驟給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08k3s?通過docker部署?Kubernetes的方法步驟
本文主要介紹了k3s?通過docker部署?Kubernetes的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-11-11docker安裝RocketMQ的實現(附填坑經驗connect to failed)
本文主要介紹了docker安裝RocketMQ(附填坑經驗connect to failed)2024-06-06