1,spring boot 项目构建
本次构建一个Euraka Server的简单项目,用docker的maven插件生成image,插件配置如下:
<plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.0.0</version><configuration><imageName>${project.build.finalName}</imageName><dockerDirectory>${basedir}/src/main/java/docker</dockerDirectory><resources><resource><targetPath>/</targetPath><directory>${project.build.directory}</directory><include>${project.build.finalName}.jar</include></resource></resources></configuration></plugin>
Dockerfile内容如下:
FROM java:8MAINTAINER jeikerxiaoVOLUME /tmpADD euraka-server.jar app.jarEXPOSE 8761ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
dockerfile路径为:(根路径)\src\main\java\docker\Dockerfile
mvn命令为:mvn clean package docker:build
2,docker安装与配置
sudo apt-get updatesudo apt-get install apt-transport-https ca-certificates curl software-properties-commoncurl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"sudo apt-get updatesudo apt-get install docker-ce -ysudo systemctl enable dockersudo systemctl start docker
使用阿里云的国内镜像仓库:
sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{"registry-mirrors": ["https://ux5m1lfc.mirror.aliyuncs.com"]}EOFsudo systemctl daemon-reloadsudo systemctl restart docker
开启本地和远程连接:
sudo vim /lib/systemd/system/docker.service//修改启动脚本语句ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375sudo systemctl daemon-reloadsudo service docker restart
配置环境变量:
sudo vim /etc/profile//增加环境变量export DOCKER_HOST=tcp://127.0.0.1:2375sudo touch /etc/profile
3.安装和配置Jenkins
3.1.前置条件:已安装jdk,git,tomcat,maven
3.2.安装:
wget https://pkg.jenkins.io/redhat-stable/jenkins-2.89.1-1.1.noarch.rpmrpm -ivh jenkins-2.89.1-1.1.noarch.rpm
3.3.配置端口
vi /etc/sysconfig/jenkins
本例中修改port为8088
3.4.开启jenkins
systemctl start jenkinssystemctl daemon-reloadsystemctl restart jenkins
3.5.浏览器配置
输入网址:http://***:8088,会提示获得初始密码解锁jenkins。
输入密码后进入。
选择默认配置,等待安装完成。
创建初始用户。
配置maven,以及其他环境变量。
安装插件Deploy to container Plugin,Maven Integration plugin。
新建项目,设置毎5分钟检查一次更新。goal:clean package -Dmaven.test.skip=true
对于经常出现错误137的情况,应考虑减少保存的构建数,以及增加swap容量。
增加2G的swap容量方法如下:
dd if=/dev/zero of=/swap bs=1024 count=2048000mkswap /swapswapon /swapvi /etc/fstab//在文件最后增加这一句话/swap swap swap default 0 0
附构建后脚本
#!/bin/bashimage_name="euraka-server"ps_out=`docker ps | grep "$image_name"`none_image=`docker images | grep none`echo $ps_outecho $none_imageif [[ "$ps_out" != "" ]]; thendocker stop $image_namedocker rm $image_namefiif [[ "$none_image" != "" ]]; thendocker images|grep none|awk '{print $3 }'|xargs docker rmifidocker run --name $image_name -d -p 8761:8761 $image_name
额外内容:如果使用tomcat部署war的方式,脚本示例如下:
使用脚本,将war拷贝到tomcat,但是要给tomcat相关脚本执行权限。
export JAVA_HOME=/usr/javatomcat_pid=`/usr/sbin/lsof -n -P -t -i :8080`[ -n "$tomcat_pid" ] && kill -9 $tomcat_pidrm -fr /usr/local/tomcat/webapps/bestlifeweb.warrm -fr /usr/local/tomcat/webapps/bestlifewebcd /var/lib/jenkins/jobs/bestlifeweb/workspace/targetcp bestlifeweb-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/bestlifeweb-0.0.1-SNAPSHOT.warcd /usr/local/tomcat/webappsmv bestlifeweb-0.0.1-SNAPSHOT.war bestlifeweb.warcd /usr/local/tomcat/bin/./startup.sh
