1,spring boot 项目构建
    本次构建一个Euraka Server的简单项目,用docker的maven插件生成image,插件配置如下:

    1. <plugin>
    2. <groupId>com.spotify</groupId>
    3. <artifactId>docker-maven-plugin</artifactId>
    4. <version>1.0.0</version>
    5. <configuration>
    6. <imageName>${project.build.finalName}</imageName>
    7. <dockerDirectory>${basedir}/src/main/java/docker</dockerDirectory>
    8. <resources>
    9. <resource>
    10. <targetPath>/</targetPath>
    11. <directory>${project.build.directory}</directory>
    12. <include>${project.build.finalName}.jar</include>
    13. </resource>
    14. </resources>
    15. </configuration>
    16. </plugin>

    Dockerfile内容如下:

    1. FROM java:8
    2. MAINTAINER jeikerxiao
    3. VOLUME /tmp
    4. ADD euraka-server.jar app.jar
    5. EXPOSE 8761
    6. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

    dockerfile路径为:(根路径)\src\main\java\docker\Dockerfile
    mvn命令为:mvn clean package docker:build
    2,docker安装与配置

    1. sudo apt-get update
    2. sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
    3. curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
    4. add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
    5. sudo apt-get update
    6. sudo apt-get install docker-ce -y
    7. sudo systemctl enable docker
    8. sudo systemctl start docker

    使用阿里云的国内镜像仓库:

    1. sudo mkdir -p /etc/docker
    2. sudo tee /etc/docker/daemon.json <<-'EOF'
    3. {
    4. "registry-mirrors": ["https://ux5m1lfc.mirror.aliyuncs.com"]
    5. }
    6. EOF
    7. sudo systemctl daemon-reload
    8. sudo systemctl restart docker

    开启本地和远程连接:

    1. sudo vim /lib/systemd/system/docker.service
    2. //修改启动脚本语句
    3. ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375
    4. sudo systemctl daemon-reload
    5. sudo service docker restart

    配置环境变量:

    1. sudo vim /etc/profile
    2. //增加环境变量
    3. export DOCKER_HOST=tcp://127.0.0.1:2375
    4. sudo touch /etc/profile

    3.安装和配置Jenkins
    3.1.前置条件:已安装jdk,git,tomcat,maven
    3.2.安装:

    1. wget https://pkg.jenkins.io/redhat-stable/jenkins-2.89.1-1.1.noarch.rpm
    2. rpm -ivh jenkins-2.89.1-1.1.noarch.rpm

    3.3.配置端口
    vi /etc/sysconfig/jenkins
    本例中修改port为8088
    3.4.开启jenkins

    1. systemctl start jenkins
    2. systemctl daemon-reload
    3. systemctl restart jenkins

    3.5.浏览器配置
    输入网址:http://***:8088,会提示获得初始密码解锁jenkins。
    Ubuntu16下基于Docker、Jenkins、Spring Boot的CI环境搭建 - 图1
    输入密码后进入。
    选择默认配置,等待安装完成。
    创建初始用户。
    配置maven,以及其他环境变量。
    安装插件Deploy to container Plugin,Maven Integration plugin。
    新建项目,设置毎5分钟检查一次更新。goal:clean package -Dmaven.test.skip=true
    对于经常出现错误137的情况,应考虑减少保存的构建数,以及增加swap容量。
    增加2G的swap容量方法如下:

    1. dd if=/dev/zero of=/swap bs=1024 count=2048000
    2. mkswap /swap
    3. swapon /swap
    4. vi /etc/fstab
    5. //在文件最后增加这一句话
    6. /swap swap swap default 0 0

    附构建后脚本

    1. #!/bin/bash
    2. image_name="euraka-server"
    3. ps_out=`docker ps | grep "$image_name"`
    4. none_image=`docker images | grep none`
    5. echo $ps_out
    6. echo $none_image
    7. if [[ "$ps_out" != "" ]]; then
    8. docker stop $image_name
    9. docker rm $image_name
    10. fi
    11. if [[ "$none_image" != "" ]]; then
    12. docker images|grep none|awk '{print $3 }'|xargs docker rmi
    13. fi
    14. docker run --name $image_name -d -p 8761:8761 $image_name

    额外内容:如果使用tomcat部署war的方式,脚本示例如下:
    使用脚本,将war拷贝到tomcat,但是要给tomcat相关脚本执行权限。

    1. export JAVA_HOME=/usr/java
    2. tomcat_pid=`/usr/sbin/lsof -n -P -t -i :8080`
    3. [ -n "$tomcat_pid" ] && kill -9 $tomcat_pid
    4. rm -fr /usr/local/tomcat/webapps/bestlifeweb.war
    5. rm -fr /usr/local/tomcat/webapps/bestlifeweb
    6. cd /var/lib/jenkins/jobs/bestlifeweb/workspace/target
    7. cp bestlifeweb-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/bestlifeweb-0.0.1-SNAPSHOT.war
    8. cd /usr/local/tomcat/webapps
    9. mv bestlifeweb-0.0.1-SNAPSHOT.war bestlifeweb.war
    10. cd /usr/local/tomcat/bin/
    11. ./startup.sh