草庐IT

Docker+Jenkins一键自动化部署、超简单~

猫四爷 2023-04-20 原文

一、安装Docker

很简单,一步步执行即可。

1、卸载旧版本(有些系统可能会自带)

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine  		

2、安装yum-utils包

yum install -y yum-utils

3、设置镜像仓库

yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4、安装docker

#docker-ce表示社区版 ee表示企业版 ,这里我们安装社区版

yum install docker-ce docker-ce-cli containerd.io

5、启动Docker

systemctl start docker

最后通过docker version 查看docker版本信息,看的到说明操作成功了。

二、安装Jenkins

Jenkins官网:https://www.jenkins.io/zh/

1、安装Jenkins

有了Docker之后,安装一切都是一条命令的事儿~

docker run --name jenkins -u root --rm -d -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean

注意:如果服务器8080端口被占用了,可以选择换个端口

然后我们访问一下Jenkins:http:${自己部署Jenkins的服务器的地址}:8080,可能需要等待几分钟

然后,我们就可以看到Jenkins了,现在需要对Jenkins进行解锁。

2、解锁Jenkins

可以通过docker ps 查看到Jenkins的容器Id

# 进入Jenkins
docker exec -it ${容器ID} /bin/bash

#查看密码
cat /var/jenkins_home/secrets/initialAdminPassword


我们将密码输入到刚刚访问的Jenkins页面,点击继续后可能要等待几分钟。

3、安装插件并创建管理账户

选择第一项“安装推荐插件”即可

创建管理账户,这个账户一定要自己记得哦~

于是,我们都设置完后就可以登录进Jenkins了。

三、Jenkins系统配置

1、安装插件

进入【首页】–【系统管理】–【插件管理】–【可选插件】。搜索以下需要安装的插件,点击安装即可。

一共需要安装三个插件,步骤都一样

  • 安装 Maven Integration
  • 安装 Publish Over SSH(如果不需要远程推送,不用安装)
  • 如果使用 Gitee 码云,安装插件Gitee(这里我们使用gitee)

2、配置maven

进入【首页】–【系统管理】–【全局工具配置】,拉到页面最下方 maven–maven 安装。

四、创建任务

1、新建任务

回到首页点击新建任务,输入一个任务名称,然后点击构建一个自由风格的软件项目

2、源码管理和添加凭证

首先我们在gitee中拿到仓库的地址


接下来我们添加凭证 先点击添加

3、构建触发器

这里只需要输入一条命令,这里只是输入一条命令看是否能成功而已,之后还会添加命令让项目跑起来

clean install -Dmaven.test.skip=true

最后点击保存

五、测试

1、构建

2、查看日志

有时候可能会构建失败,我们可以查看日志 知道出错的原因。

点击后再点击查看控制台

3、查看构建完后的项目位置

cd /var/jenkins_home/workspace
ls


即可看到打完的jar包。

六、运行项目

我们运行项目的步骤是,通过Dockerfile构建docker镜像,然后在执行镜像即可。

1、Dockerfile编写

在SpringBoot项目根目录下创建一个名为Dockerfile(没有后缀)的文件。

FROM openjdk:8
ADD target/one-demo-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 6379
ENTRYPOINT java -jar /app.jar

这里需要懂点Docker的知识,不懂也没关系,照着做就行。

2、修改Jenkins的任务配置

点击之前创建好的任务

再点击配置

再回到之前配置触发器的地方

添加命令如下:

cd /var/jenkins_home/workspace/one-demo
docker stop one-demo || true
docker rm one-demo || true
docker rmi one-demo || true
docker build -t one-demo .
docker run -d -p 6379:6379 --name one-demo one-demo:latest

备注:

  • 添加“ ||true ”是表示如果命令执行失败也会继续执行。为的是防止第一次执行时one-demo不存在而报错 使命令无法继续执行下去。
  • 另外用6379端口是因为我阿里云的安全组目前只开了8080端口和6379端口,然后阿里云帐号又用的是别人的号,我这边登录不了。所以暂时没法开放其他端口,所以只能用了和redis相同的6379端口,哈哈。

七、验证

先使用docker ps看自己构建的镜像是否跑起来了。

然后我们的SpringBoot项目中有一个测试接口

我可以在浏览器中访问一下这个接口、完美运行。

这样,我们以后本地的代码修改后只需要提交至git,然后到Jenkins中点击构建即可重新部署项目。非常方便有木有!!!

八、补充(Jenkins动态选择git分支)

1、安装Git Parameter插件

2、配置

1、点击项目再点击配置


2、配置“参数化构建”

3、测试

每次点击构建时即可动态的选择git分支

九、后记

恭喜你,完结撒花,就是这么简单。
生活明朗,万物可爱,人间值得,未来可期!!!

有关Docker+Jenkins一键自动化部署、超简单~的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  3. ruby - 简单获取法拉第超时 - 2

    有没有办法在这个简单的get方法中添加超时选项?我正在使用法拉第3.3。Faraday.get(url)四处寻找,我只能先发起连接后应用超时选项,然后应用超时选项。或者有什么简单的方法?这就是我现在正在做的:conn=Faraday.newresponse=conn.getdo|req|req.urlurlreq.options.timeout=2#2secondsend 最佳答案 试试这个:conn=Faraday.newdo|conn|conn.options.timeout=20endresponse=conn.get(url

  4. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  5. ruby-on-rails - 简单的 Ruby on Rails 问题——如何将评论附加到用户和文章? - 2

    我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google就是没有帮助我。(我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过O'Reilly的RubyCookbook和RailsAPI,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。我正在尝试调整MichaelHartl'stutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。我的主要问题是:我不知道如何将当前文章的ID放入评论Controller。

  6. ruby - 使用 Ruby 通过 Outlook 发送消息的最简单方法是什么? - 2

    我的工作要求我为某些测试自动生成电子邮件。我一直在四处寻找,但未能找到可以快速实现的合理解决方案。它需要在outlook而不是其他邮件服务器中,因为我们有一些奇怪的身份验证规则,我们需要保存草稿而不是仅仅发送邮件的选项。显然win32ole可以做到这一点,但我找不到任何相当简单的例子。 最佳答案 假设存储了Outlook凭据并且您设置为自动登录到Outlook,WIN32OLE可以很好地完成此操作:require'win32ole'outlook=WIN32OLE.new('Outlook.Application')message=

  7. ruby-on-rails - 从应用程序中自定义文件夹内的命名空间自动加载 - 2

    我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty

  8. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  9. postman——集合——执行集合——测试脚本——pm对象简单示例02 - 2

    //1.验证返回状态码是否是200pm.test("Statuscodeis200",function(){pm.response.to.have.status(200);});//2.验证返回body内是否含有某个值pm.test("Bodymatchesstring",function(){pm.expect(pm.response.text()).to.include("string_you_want_to_search");});//3.验证某个返回值是否是100pm.test("Yourtestname",function(){varjsonData=pm.response.json

  10. ruby-on-rails - rbenv:从 RVM 移动到 rbenv 后,在 Jenkins 执行 shell 中找不到命令 - 2

    我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions

随机推荐