目次
1.前提条件の環境
1、nginx
https://blog.csdn.net/qq_42815754/article/details/82980326
2、Docker
Baidu
3、gitlab
Docker構成GitlabJenkins Javaプロジェクトの自動デプロイメント(1)Gitlab
4、ジェンキンス
Docker構成GitlabJenkins Javaプロジェクトの自動デプロイメント(2つ)Jenkins
PS:第1章と第2章の基本的な構成とインストールである限り
二、配置
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 #referencenginxはミラーを生成するときに1つを生成します
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;
# }
#}
}
上記の逆マッピングは、ここでゲートウェイを指しています。単純なスプリングブートプロジェクトの場合は、プロジェクトプレフィックスに逆マッピングできます。
2つのファイルが構成されています
6、Jenkins構成
a、プラグインnodejsをインストールします
b。グローバルツール構成を構成します
PS:ここから選択するバージョン番号がない場合は、次のリンクを参照して調整してください
https://blog.csdn.net/qq_33381971/article/details/89423977
c。新しいタスク
d。ソースコード管理
gitlabウェアハウスパスに入力します
c。ビルドトリガー
gitlabに移動してwebhookを構成し、上記の2つのコピーを入力します
d。ビルド環境
e。ビルド
ここでは2つのシェル処理が分離されています
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 "复制 /var/jenkins_home/workspace/autp-vue/dist 到 /var/jenkins_home/web/autp-vue "
cp -r /var/jenkins_home/workspace/autp-vue/dist /var/jenkins_home/web/autp-vue
# 构建docker镜像
function build(){
if [ -n "$IID" ]; then
echo "存在$SERVER_NAME镜像,IID=$IID"
else
echo "不存在$SERVER_NAME镜像,开始构建镜像"
echo "命令 cd $BASE_PATH"
cd $BASE_PATH
echo "命令 docker build -t $SERVER_NAME ."
docker build -t $SERVER_NAME .
fi
}
# 运行docker容器
function run(){
build
if [ -n "$CID" ]; then
echo "存在$SERVER_NAME容器,CID=$CID,重启docker容器 ..."
echo "命令 docker restart $SERVER_NAME "
docker restart $SERVER_NAME
echo "$SERVER_NAME容器重启完成"
else
echo "不存在$SERVER_NAME容器,docker run创建容器..."
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:/web/autp-vue --name autp-vue autp-vue
echo "$SERVER_NAME容器创建完成"
fi
}
#入口
run
確認を保存
3、テスト
最初のビルドには長い時間がかかります
ログの真ん中の山は省略されています。。。。。。。。
Dockerpsを表示する
ページにIP:9000と入力すると、正常に開きます(開いた後、バックグラウンドコードのインターフェイスが404にアクセスする場合、nginx.confのルーティング構成が正しくありません。プロジェクトのプレフィックスとIPアドレスを自分で確認し、localhostを使用しないでください。特定のIPを書き込む)
最終的なコードが送信されると、コードは自動的にデプロイされます。
自動更新の展開は成功し、他の質問についても話し合うことができます