Jenkins部署SpringBoot到Docker容器中运行

Jenkins部署jar到docker中运行

首先需要安装Jdk,Jenkins,maven,git 等前置工具,还有jenkins的git,maven插件(最好再搞个汉化插件),这里就不一个一个写了,内容太多了,如果有需要评论,专门写一篇jenkins的安装以及插件的也可以。

然后如何你是使用的 腾讯云 会发新无论如何插件都是连接不上不能在线下载,只能离线上传,这个时候就需要把安全组的出口配置成允许所有(鬼知道为啥有这骚操作,当时恶心了我半天才找到的解决办法),其他云服务器不晓得如果也有这个问题可以试试这个办法。

  • 1 因为要部署到Docker中首先要让jenkins用户有操作docker的权限,执行下面命令,将jenkins加入docker组
sudo gpasswd -a jenkins docker
  • 2 配置jenkins全局工具,如果已经配置过了跳过下面步骤
    Jenkins部署SpringBoot到Docker容器中运行_第1张图片

  • 3 生成ssh私钥

     ssh-keygen -t rsa -C "[email protected]"
  • 4 然后将rsa私钥里的全部内容复制进来,包括注释,在这添加ssh凭证,让jenkins有权限可以去pull代码,同时把公钥在git上加一份
    Jenkins部署SpringBoot到Docker容器中运行_第2张图片
  • 5 这个时候就可以新建一个任务了(这里app我已经创建过了),构建一个maven项目
    Jenkins部署SpringBoot到Docker容器中运行_第3张图片
  • 6 在配置里选择github项目,这里的url就是平时克隆的那个url
    Jenkins部署SpringBoot到Docker容器中运行_第4张图片
    然后分支一般就是master,可以添加别的分支
    在这里插入图片描述
    然后就是配置maven打包命令,和打包之后执行的脚本,这里应该给/usr/app 加上权限否则jenkins无法访问
    Jenkins部署SpringBoot到Docker容器中运行_第5张图片
  • 7 然后写一个dockerfile,打包一个镜像备用,命名一定是Dockerfile
FROM kimicheng/jdk1.8.0_91  #基础镜像,随便一个jdk1.8就可以了
MAINTAINER 754369677@qq.com   #作者 
WORKDIR /app   #设置docker容器的工作区
ENV LANG en_US.UTF-8  #设置编码这里可以不要也没问题
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
COPY app-0.0.1-SNAPSHOT.jar /app/app.jar  #拷贝当前目录下的jar到docker容器中
EXPOSE 8787      #对外开放端口
CMD java -jar /app/app.jar  #最后运行的命令
  • 8 然后开始编写脚本,jenkins打好的包会在/var/lib/jenkins/workspace/目录下,以最开始创建的任务名称命名文件夹比如我的是/var/lib/jenkins/workspace/app/target/app-0.0.1-SNAPSHOT.jar
docker stop utfapp   #先关闭docker 不用kill就是舒服
cp /var/lib/jenkins/workspace/app/target/app-0.0.1-SNAPSHOT.jar /usr/app #复制jenkins打包好的jar到当前目录下
chmod +777 app-0.0.1-SNAPSHOT.jar  #加权限
docker rm utfapp  #先删除容器
docker rmi utf8app #再删除镜像
docker build -t utf8app .  #生成镜像,别忘了最后的.代表当前目录
docker run -d -p 8787:8787 --name utfapp utf8app #生成容器并运行

docker ps查看一下,容器已经运行了
在这里插入图片描述
然后docker logs utfapp(容器别名)
Jenkins部署SpringBoot到Docker容器中运行_第6张图片
这样就OK了。

然后如果遇到容器内的程序例如mysql,redis等连接不上宿主主机可以查看我的另一篇博客 https://blog.csdn.net/Day_Day_No_Bug/article/details/97643293

你可能感兴趣的:(Jenkins,Docker)