天天看點

Docker配置 Gitlab Jenkins java 項目自動化部署(三)VUE 前後端分離一、前提環境二、配置三、測試

目錄

一、前提環境

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
           
Docker配置 Gitlab Jenkins java 項目自動化部署(三)VUE 前後端分離一、前提環境二、配置三、測試

二、配置

1、vue項目準備

首先本地測試打包(驗證確定這個項目是一個能正常運作的) 

npm run build 
           

cmd 到項目的目錄輸入指令後, 能夠生成 一個 dist 檔案夾,下圖的黃色檔案夾。該檔案夾不需要上傳gitlab ,隻是一個測試,成功後删掉即可

Docker配置 Gitlab Jenkins java 項目自動化部署(三)VUE 前後端分離一、前提環境二、配置三、測試

2、代碼上傳gitlab

Docker配置 Gitlab Jenkins java 項目自動化部署(三)VUE 前後端分離一、前提環境二、配置三、測試

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項目,則反向映射到其項目字首即可

Docker配置 Gitlab Jenkins java 項目自動化部署(三)VUE 前後端分離一、前提環境二、配置三、測試

 兩個檔案配置好

Docker配置 Gitlab Jenkins java 項目自動化部署(三)VUE 前後端分離一、前提環境二、配置三、測試

6、Jenkins配置

a、安裝插件 nodejs

Docker配置 Gitlab Jenkins java 項目自動化部署(三)VUE 前後端分離一、前提環境二、配置三、測試

b.配置全局工具配置

Docker配置 Gitlab Jenkins java 項目自動化部署(三)VUE 前後端分離一、前提環境二、配置三、測試

PS:如果這裡沒有版本号可以選擇的話,參考以下連結調整 

https://blog.csdn.net/qq_33381971/article/details/89423977

c.建立任務

Docker配置 Gitlab Jenkins java 項目自動化部署(三)VUE 前後端分離一、前提環境二、配置三、測試

d.源碼管理

把gitlab的倉庫路徑填入

Docker配置 Gitlab Jenkins java 項目自動化部署(三)VUE 前後端分離一、前提環境二、配置三、測試

c.建構觸發器

Docker配置 Gitlab Jenkins java 項目自動化部署(三)VUE 前後端分離一、前提環境二、配置三、測試

去到gitlab配置webhook,把上面兩個複制填上

Docker配置 Gitlab Jenkins java 項目自動化部署(三)VUE 前後端分離一、前提環境二、配置三、測試

d.建構環境

Docker配置 Gitlab Jenkins java 項目自動化部署(三)VUE 前後端分離一、前提環境二、配置三、測試

e.建構

Docker配置 Gitlab Jenkins java 項目自動化部署(三)VUE 前後端分離一、前提環境二、配置三、測試

這裡分開兩個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配置 Gitlab Jenkins java 項目自動化部署(三)VUE 前後端分離一、前提環境二、配置三、測試
Docker配置 Gitlab Jenkins java 項目自動化部署(三)VUE 前後端分離一、前提環境二、配置三、測試

中間一堆日志省略。。。。。。。。 

Docker配置 Gitlab Jenkins java 項目自動化部署(三)VUE 前後端分離一、前提環境二、配置三、測試

檢視docker ps

Docker配置 Gitlab Jenkins java 項目自動化部署(三)VUE 前後端分離一、前提環境二、配置三、測試

頁面輸入IP:9000,成功打開(如果打開後,背景代碼的接口通路404,則是nginx.conf 中的路由配置沒對。自己核對下項目字首和IP位址,請勿使用localhost,寫上具體IP)

Docker配置 Gitlab Jenkins java 項目自動化部署(三)VUE 前後端分離一、前提環境二、配置三、測試

最後的代碼一送出,自動化部署代碼。

自動化更新部署成功,有其它的問題歡迎探讨

Docker配置 Gitlab Jenkins java 項目自動化部署(一)Gitlab

Docker配置 Gitlab Jenkins java 項目自動化部署(二)Jenkins