目錄
一、前提環境
1、nginx
2、Docker
3、gitlab
4、jenkins
二、配置
1、vue項目準備
2、代碼上傳gitlab
3、 建立宿主檔案夾
4、 建立Dockerfile
5、建立 nginx.conf
6、Jenkins配置
a、安裝插件 nodejs
b.配置全局工具配置
c.建立任務
d.源碼管理
c.建構觸發器
d.建構環境
e.建構
三、測試
一、前提環境
1、nginx
https://blog.csdn.net/qq_42815754/article/details/82980326
2、Docker
百度
3、gitlab
Docker配置 Gitlab Jenkins java 項目自動化部署(一)Gitlab
4、jenkins
Docker配置 Gitlab Jenkins java 項目自動化部署(二)Jenkins
PS:jenkins 隻要一、二章的基礎的配置安裝
jenkins在Docker上配置設定的記憶體起碼 加到2.5G,不然會vue項目建構有可能失敗
記憶體調整:
docker update -m 2500M --memory-swap 2500M myjenkins
二、配置
1、vue項目準備
首先本地測試打包(驗證確定這個項目是一個能正常運作的)
npm run build
cmd 到項目的目錄輸入指令後, 能夠生成 一個 dist 檔案夾,下圖的黃色檔案夾。該檔案夾不需要上傳gitlab ,隻是一個測試,成功後删掉即可
2、代碼上傳gitlab
3、 建立宿主檔案夾
我的 jenkins_home 映射的 是本地 /var/jenkins_mount(前提是你的jenkins已經安裝好)
#建立檔案夾
mkdir /var/jenkins_mount/web/autp-vue
#給權限
chmod 777 /var/jenkins_mount/web/autp-vue
4、 建立Dockerfile
在 /var/jenkins_mount/web/autp-vue 目錄下建立
FROM nginx
WORKDIR /web/autp-vue
LABEL maintaniner="cjw"
COPY dist/ /usr/share/nginx/html/
COPY nginx.conf /etc/nginx/nginx.conf
FROM nginx #引用nginx 會在生成鏡像的時候 生成一個
WORKDIR /web/autp-vue #建立工作空間
LABEL maintaniner="cjw"
COPY dist/ /usr/share/nginx/html/ #映射到nginx的前端虛拟路徑
COPY nginx.conf /etc/nginx/nginx.conf #映射到nginx的配置
5、建立 nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include 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 logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name 172.0.0.1;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ @router;
index index.html index.htm;
}
location @router {
rewrite ^.*$ /index.html last;
}
#這裡添加一個反向映射,反射到springCloud的網關,如果不需要就去掉
location /inner/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8084/autp/inner/;
}
#location / {
# root 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 html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
上面的反向映射是指向gateway這裡的,如果隻是簡單的springboot項目,則反向映射到其項目字首即可
兩個檔案配置好
6、Jenkins配置
a、安裝插件 nodejs
b.配置全局工具配置
PS:如果這裡沒有版本号可以選擇的話,參考以下連結調整
https://blog.csdn.net/qq_33381971/article/details/89423977
c.建立任務
d.源碼管理
把gitlab的倉庫路徑填入
c.建構觸發器
去到gitlab配置webhook,把上面兩個複制填上
d.建構環境
e.建構
這裡分開兩個shell處理
echo $PATH
node -v
npm -v
echo "修改依賴環境"
npm install chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver
echo "添加依賴"
npm install
echo "項目打包生成dist檔案夾"
npm run build
#!/bin/bash
source /etc/profile
#操作/項目路徑(Dockerfile存放的路勁)
BASE_PATH=/var/jenkins_home/web/autp-vue
SERVER_NAME=autp-vue
#容器id
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
#鏡像id
IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')
echo "周遊成功先删除,原檔案夾 rm -rf /var/jenkins_home/web/autp-vue/dist"
rm -rf /var/jenkins_home/web/autp-vue/dist
echo "cp -rf /var/jenkins_home/workspace/autp-vue/dist /var/jenkins_home/web/autp-vue"
cp -rf /var/jenkins_home/workspace/autp-vue/dist /var/jenkins_home/web/autp-vue
# 建構docker鏡像
function build(){
echo "停止容器"
docker stop $SERVER_NAME
echo "删除容器"
docker rm $SERVER_NAME
echo "删除鏡像"
docker rmi $SERVER_NAME
cd $BASE_PATH
echo "指令 docker build -t $SERVER_NAME ."
docker build -t $SERVER_NAME .
}
# 運作docker容器
function run(){
build
echo "指令 docker run -p 9000:80 -d -v /var/jenkins_mount/web/autp-vue:/web/autp-vue --name autp-vue autp-vue"
docker run -p 9000:80 -d -v /var/jenkins_mount/web/autp-vue/dist:/web/autp-vue --name autp-vue autp-vue
echo "$SERVER_NAME容器建立完成"
}
#入口
run
儲存确認
三、測試
第一次建構會比較長時間
中間一堆日志省略。。。。。。。。
檢視docker ps
頁面輸入IP:9000,成功打開(如果打開後,背景代碼的接口通路404,則是nginx.conf 中的路由配置沒對。自己核對下項目字首和IP位址,請勿使用localhost,寫上具體IP)
最後的代碼一送出,自動化部署代碼。
自動化更新部署成功,有其它的問題歡迎探讨
Docker配置 Gitlab Jenkins java 項目自動化部署(一)Gitlab
Docker配置 Gitlab Jenkins java 項目自動化部署(二)Jenkins