整整一天学习了Jenkins+Spring Boot+Docker+Maven+GitLab自动化部署
环境:
服务器:
CentOS 7(阿里云)
JDK:
Docker:
Jinkins:
Maven:
GIT:
下面是一些中间用到的命令:、
Docker相关
docker ps -a 查看容器
docker images 查看镜像
docker rmi (dockerImageId) 删除镜像 注:先把容器给删了
docker rm (dockerContainerId) 删除容器 注:先停止容器
docker stop (dockerContainerId) 停止容器
Tomcat相关
sh startup.sh 开启tomcat
sh shutdown.sh 关闭tomcat
查看启动情况 ps -ef | grep tomcat
查看端口占用情况 netstat -tunlp | grep 8080
杀死进程 kill -9 (PID)
Jenkins相关:
例子中使用的是容器启动Jenkins,所以启动和启动普通的WEB应用一致
GIT相关:
git add 添加到暂存区
git clone 拉取代码
git commit 提交到本地仓库
git push 上传代码
......
网络相关
ifconfig / ip addr 查看IP地址
ping 测试是否能够主机互联
确保防火墙关闭
service firewalld status 查看防火墙状态
jenkins安装插件:
具体装哪些,详情如何可以自行查阅资料,上边给我装过的
通过前面的准备,基本满足了这次实践的前置要求,下面开始我不断搜索,不断测试,最后总结的一个过程,中间一些做法或许不好,仅做参考
1)http://www.cherish.pro:8088/jenkins/
下面的关注点都是myTask这个构建任务
配置详情为:
·
最后保存即可
上面重点是GIT需要确保能够正常使用、以及maven需要正常使用,以及shell的编写
中间的一些信息,如docker镜像编译都是需要单独测试通过,只有这些单独测试都通过才能够做整合测试
下面是该docker镜像生成的过程
一个Boot项目,端口默认8080
只有一个Controller
@RestController
public class DockerController {
@RequestMapping("/")
public String index() {
return "Hello Docker!";
}
}
重点是编译配置
src/main/docker先创建Dockerfile文件
FROM cherishlailai/jdk_tomcat
VOLUME /tmp
ADD spring-boot-docker-0.0.1-SNAPSHOT.jar /app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
pom.xml中添加docker编译插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<!-- Docker maven plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>${docker.image.prefix}/${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>
<!-- Docker maven plugin -->
</plugins>
</build>
使用mvn package docker:build 可以编译出镜像,所以会有构建后置shell,启动容器并指定宿主机-docker映射端口
小结:通过上面的测试,jenkins自动化部署Demo已经成功跑通,中间遇到问题有:
1、对构建配置不理解,看了很多的文章
2、第一次使用docker编译插件,中间饶了些圈子
3、阿里云默认没有虚拟内存,下图是通过网上的资料配置虚拟内存后的截图,仅供参考
在构建的最后,失败,报错
Maven JVM terminated unexpectedly with exit code 137
综述:
以上实现的功能是:替代运维人员每次拉取代码,上传服务端,维护各种路径,执行通用命令的一些操作,整个构建过程变得自动化,运维只需要看构建结果。
PS :上述是自己的自动化构建部署的一次实例,供自己复习及给一些小伙伴一些参考。体验极佳!