Jenkins+Docker部署Maven聚合工程
2019-05-21 00:14
2616 查看
这几天,把公司的预发布环境,改成docker部署,遇到了一些坑,有jenkins里的部署脚本的问题,也有harbor仓库的问题,还有docker远程访问的问题,还有DooD....一堆坑
Jenkins里,没有直接安装在Centos7上,是用的docker安装的jenkins
1.安装Docker
这个就简单了,随便都可以搜到,这里只是贴我安装的命令
# 卸载旧版本 sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine # 安装 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # 添加yum源 sudo yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo # 安装 yum makecache fast yum -y install docker-ce 启动 systemctl enable docker systemctl start docker
2.安装Docker版本的Jenkins
先这样安装,在用Jenkins打镜像包的时候,就会有DooD的问题
docker run -d \ -v /var/run/docker.sock:/var/run/docker.sock \ -v $(which docker):/usr/bin/docker -p 8080:8080 \ jenkins
- 第2行是将宿主机的/var/run/docker.sock映射到容器中,这样在容器中运行的docker命令,就会在宿主机上来执行。
- 第3行是将宿主机的docker程序映射进容器中,这样本身没有安装docker的jenkins容器就可以执行docker命令了(事实上容器里是没有运行docker的服务的,我们只是用这个映射进容器的docker来作为客户端发送docker的指令到/var/run/docker.sock而已,儿/var/run/docker.sock已经被链接到宿主机了)
访问:http://localhost:8080,安装插件,设置管理员密码
3.介绍项目的目录,以及写Dockerfile
1.这里是用的是Maven的聚合工程
2.Dockerfile
FROM openjdk:8-jdk-alpine VOLUME /tmp ADD admin-server-0.0.1-SNAPSHOT.jar app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
admin-server-0.0.1-SNAPSHOT.jar就是,maven打完包的包名
3.Maven的pom.xml配置
<plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.13</version> <configuration> <imageName>springboot/${project.artifactId}</imageName> <dockerDirectory>src/main/docker</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin>
imageName
打的镜像名称,这里的镜像名称是:springboot/admin-serverdockerDirectory
指定docker文件夹的位置
4.新建Jenkins配置
配置Git仓库
- 这个是让公司的运维写的脚本,在构建完成之后,把已经运行的容器 docker stop admin-server 停止
- docker rm admin-server 然后再删除
然后再运行
- -p 指定端口
- -e "SPRING_PROFILES_ACTIVE=prerelease" ,可以看成是启动jar的时候的,java -jar admin-server.jar --spring.profiles.active=prerelease ,指定运行环境
- -- name 容器别名
5.出现的问题
如果docker run jenkins 没有指定
-v /var/run/docker.sock:/var/run/docker.sock \ -v $(which docker):/usr/bin/docker
这里就不能打包,就是因为在jenkins里的容器中,没有安装对象,使用了-v ,就是把jenkins里所需要的docker映射到宿主docker中
6.小结
这里只是在Centos7的一台服务器里,安装了docker,运行了jenkins容器,在jenkins容器中,打包镜像,然后再同一台服务器中运行,使用生产中,并不会用这样的方式,下一篇就写使用harbor仓库,安装仓库也是很简单,只是在docker与docker,docker与仓库之间的通信需要https请求,遇到的问题
7.参考的博客
1.解决是DooD的问题:http://www.up4dev.com/2018/11/27/run-docker-by-jenkins-in-docker/
2.更多可访问我的博客:https://yanganlin.com
相关文章推荐
- jenkins+maven+docker+github全自动化部署SpringBoot
- jenkins&docker自动化部署maven项目
- jenkins 部署聚合工程的时候 打不进去 父项目的jar包
- jenkins+git+maven+docker持续集成部署
- docker容器自动化部署落地实践之五:用jenkins+gitlab+docker完成容器化工程自动化部署集成
- 微服务之一键部署git+maven+jenkins+docker
- jenkins自动化部署搭建。jenkins+docker+maven+git+springboot
- SpringBoot + maven + Jenkins + docker 实现docker集群一键自动化部署
- jenkins+maven+docker+github全自动化部署SpringBoot
- 阿里云通过Docker部署Jenkins服务过程(支持Maven)
- 微服务之自动部署git+maven+jenkins+docker
- 在搭建基于jenkins+maven+git+docker的全自动化部署时遇到的问题
- 关于maven多模块聚合项目部署等问题--<Jenkins>
- Jenkins+docker+git+maven 实现自动化部署
- jenkins自动部署maven工程到服务器----SSH+shell
- jenkins+maven+svn+tomcat之快速部署初探(docker篇)
- jenkins + docker + maven + git(阿里云code) 部署spring-cloud-eureka
- 使用Jenkins实现Jetty热部署Maven程序(20s极速)
- docker+nexus+jenkins+java+maven
- [置顶] CentOS安装Jenkins全程并启动一个Maven工程