1.服务器开放docker端口,默认2357
2.IDEA新建springboot项目,配置docker-maven插件,mvn clean -DskipTests package或build触发docker 镜像构建
进入服务器docker images可看到镜像,谷歌!浏览器访问http://192.168.203.133:5001/v2/_catalog可见镜像已push到私有仓库
Dockerfile
3.配置idea,创建容器并启动
idea docker插件配置docker连接(为安全可以考虑配置一下https通过证书连接)
启动
4.再优化!——基于jenkins构建镜像进行容器化部署
通过idea构建镜像至少存在几个问题:多人修改同一项目,可能出现代码覆盖;如果本地与服务器网络比较差,开发效率不会高,因为项目镜像是本地构建再上传到服务器;必须开发人员才能进行项目构建等问题,利用jenkins可以解决这些问题,且可以进行一些权限设置,镜像管理,多种构建触发器及自动化构建,邮件告警设置等多种功能
4.1 因为jenkins构建项目一般是在服务器上根据git代码仓库的项目的pom文件进行构建,所以需要安装一些其它东西
jdk:yum search java | grep jdk 搜索到jdk进行yum安装:yum install XXXX
maven:yum install maven ; mvn -v
Git: yum install git 代码库创建参考
4.2 jenkins下载与启动
4.3插件安装
先安装推荐插件(选择推荐的,推荐的插件应该没有Maven Integration plugin,后续需要安装),可能很慢,可以考虑官网下载.hpi到本地或其他地方找来.hpi进行离线安装(Manage Jenkins=>advanced=>upload plugin)
4.4环境配置
主要配置 Manage Jenkins=>Global Tool Configuration ,主要设置JAVA_HOME,GIT可执行命令path(which git查看),MAVEN_HOME ,可以设置一下maven configuration,如果用默认的settings.xml初次构建会很慢,自定义settings.xml设置一下maven仓库地址和阿里云仓库。其它可以在Manage Jenkins=>Configure System进行配置,如邮件。如果jdk,maven等之前已设置了环境变量,这里貌似也可不用再设置!!!
docker安装jenkin注意点!
jenkins 是Java项目,故docker安装的jenkins容器内已有jdk,如最新的jenkins 镜像的jdk用的11,
容器内which java找到的路径应该是 /opt/java/openjdk/bin/java ,故这里配置JAVA_HOME=/opt/java/openjdk ,如果使用宿主机的jdk则需要多映射一个目录
另外maven 安装可以映射宿主机maven到容器,建议 wget https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.4/apache-maven-3.8.4-bin.tar.gz 下载并解压到宿主机jenkins 目录(该目录要映射到容器)的tools里面,配置时指定该路径,注意这些路径都是相对容器的路径。
jenkins docker容器内部执行docker命令会有问题,需要配置jenkins 免密登录宿主机,jenkins容器内执行远程命令: ssh xxx@192.168.x.x "command"
4.5 项目构建配置 New Item=>构建一个maven风格的项目
因为是多模块项目多分支项目:需要设置两个构建需要的自定义参数:模块名module_name,分支名:branch
配置代码库,如jenkins,git不在同一个服务器,可以使用绝对路径如:git@192.168.203.133:/home/gitrepo/test2.git
触发器配置,如果项目列表页手动触发,可以不配置触发器,这里可以配置定时触发,远程URL触发,如
http://test.jenkins.construn.cn/buildByToken/buildWithParameters?job=vehicle_2.0-test&token=11d5653da4cb251f125b34f422cc81cda5&module_name=payment&branch=master
指定要构建的module_name,branch,token(token 生成操作如下),访问此链接即可触发。
构建命令配置,即maven 命令,-pl指定模块名 -am表示同时要构建所选模块所依赖的其他模块如common模块,
因为该pom.xml有使用docker-maven插件,固构建即生成镜像,并push到私有仓库,其它服务器即可从仓库拉取镜像启动项目
构建后执行的shell脚本,这里只需要启动容器即可,最后还可以配置一下构建邮件通知,自动化定时构建时可能有用
4.6手动触发构建
不配置触发器,就只能手动触发构建,指定上面自定义的两个参数module_name,branch即可build
4.7如果pom.xml不使用docker-maven插件,可以通过shell自己build镜像并启动容器最后push到仓库
5.其它参考
Idea连接服务器docker并部署代码到docker实现一键启动 - 今天不打怪 - 博客园
Jenkins+Docker持续集成_artaganan8的博客-CSDN博客_docker jenkins