使用Docker-compose + Nginx + Jenkins自动化部署项目

前言

好了,今天休息正好整理一下,最近Jenkins从零到实战的使用,关于Jenkins介绍这里不在描述,详细介绍可以去看官网https://www.jenkins.io/,前两篇文章中并没有加入nginx来做反向代理,今天也引入nginx反向代理部署,网上大部分使用nginx docker镜像来部署,这里我使用的是linux系统本地部署nginx。

Nginx、Docker、Compose、Jenkins安装

关于nginx、docker、docker-compose、Jenkins的安装在前面的几篇都有详细的教程,所以这里就不详细张开了,直接附上链接。
Nginx安装:https://blog.csdn.net/andyLyysh/article/details/127322789?spm=1001.2014.3001.5502

Docker和Docker-compose的安装:https://blog.csdn.net/andyLyysh/article/details/126738190?spm=1001.2014.3001.5502

Jenkins的安装:https://blog.csdn.net/andyLyysh/article/details/128585967?spm=1001.2014.3001.5502

Nginx的配置
upstream jenkins {
    keepalive 32;
    server 127.0.0.1:8082;
}

server {
    listen 80;
    server_name jenkins.adc.com;
    charset utf-8;


    location / {
        sendfile off;
        proxy_pass         http://jenkins;
        proxy_redirect     default;
        proxy_http_version 1.1;

        proxy_set_header   Host              $http_host;
        proxy_set_header   X-Real-IP         $remote_addr;
        proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_max_temp_file_size 0;

        client_max_body_size       10m;
        client_body_buffer_size    128k;

        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_buffering            off;
        proxy_request_buffering    off; 
        proxy_set_header Connection ""; 
    }

    access_log      /var/log/nginx/jenkins.access.log;
    error_log       /var/log/nginx/jenkins.error.log;
}

配置好后,重启nginx
如果之前使用ip+端口进行访问Jenkins的,需要在Configure System中找到Jenkins Location中的url配置,更换代理的域名,配置好后就可以用域名来访问了

最后附上自动化部署spring boot项目的实际案例,使用的pipeline流水线任务。

pipeline {
    agent any
    
    tools {
        maven "maven3.8.6"
        jdk "java8"
    }
    
    stages {
        stage ("拉取git仓库代码") {
            steps {
                git branch: 'dev', credentialsId: '4d17752e-5d17-436c-8943-55d92574cebd', url: 'http://xxxx.xxxx.vip/liboxiang/topfus_social.git'
            }
        }
        
        stage ("构建项目") {
            steps {
                sh '''
                    mvn clean package
                '''
            }
        }

        stage ("推送Dockerfile ... ") {
            steps {
                sshPublisher(publishers: [sshPublisherDesc(configName: 'localserver', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''
                mv /data/social/social-admin-api/Dockerfile /data/social/social-admin-api/back/Dockerfile`date +%Y%m%d`
                cd ~/social/social-admin/
                mv ./Dockerfile /data/social/social-admin-api''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/social/social-admin/', remoteDirectorySDF: false, removePrefix: 'topfus-admin-api/', sourceFiles: 'topfus-admin-api/Dockerfile'), sshTransfer(cleanRemote: false, excludes: '', execCommand: '''
                mv /data/social/social-client-api/Dockerfile /data/social/social-client-api/back/Dockerfile`date +%Y%m%d`
                cd ~/social/social-client/
                mv ./Dockerfile /data/social/social-client-api''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/social/social-client/', remoteDirectorySDF: false, removePrefix: 'topfus-client-api/', sourceFiles: 'topfus-client-api/Dockerfile')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            }
        }
        
        stage ("推送jar ... ") {
            steps {
                sshPublisher(publishers: [sshPublisherDesc(configName: 'localserver', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''cd /data/social/
                echo "docker stopping ... "
                docker-compose stop
                mv /data/social/social-admin-api/social-admin.jar /data/social/social-admin-api/back/social-admin-`date +%Y%m%d`.jar
                mv /data/social/social-client-api/social-client.jar /data/social/social-client-api/back/social-client-`date +%Y%m%d`.jar
                cd ~/social/social-admin
                mv ./social-admin.jar /data/social/social-admin-api/''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/social/social-admin', remoteDirectorySDF: false, removePrefix: 'topfus-admin-api/target/', sourceFiles: 'topfus-admin-api/target/social-admin.jar'), sshTransfer(cleanRemote: false, excludes: '', execCommand: '''cd ~/social/social-client
                mv ./social-client.jar /data/social/social-client-api/
                cd /data/social/
                echo "docker starting ... "
                docker-compose up -d --build''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/social/social-client', remoteDirectorySDF: false, removePrefix: 'topfus-client-api/target/', sourceFiles: 'topfus-client-api/target/social-client.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            }
        }
        
    }
}

注意:在实际使用过程中,一定做好上一个版本的备份,详细请看脚本代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

珍朱(珠)奶茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值