本文所有涉及项目名的地方均为 YOUR_PROJECT,请自行修改。

在项目的根目录创建 Dockerfile 文件。

1
2
3
4
FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY ./target/YOUR_PROJECT.jar YOUR_PROJECT.jar
ENTRYPOINT ["java","-jar","/YOUR_PROJECT.jar","&"]

在项目的 pom.xml 文件中添加打包类型和 maven 插件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<groupId>com.pikanglong</groupId>
<artifactId>YOUR_PROJECT</artifactId>
<packaging>jar</packaging>
<version>1.0.0</version>

<build>
<finalName>YOUR_PROJECT</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

在 Linux 服务器上安装 Java、Maven、Git 和 Docker。

http://mirrors.jenkins.io/war-stable/latest/jenkins.war 下载 Jenkins 的 war 包,并上传到 Linux 服务器中。

启动 war 包:nohup java -jar /usr/local/jenkins/jenkins.war >/usr/local/jenkins/jenkins.out &

启动后提示「忽略输入重定向错误到标准输出端」,再次点击回车。

使用 Linux 系统 ip:8080 访问 Jenkins 管理页面。

找到管理员密码进行输入,点击继续。

1
cat /root/.jenkins/secrets/initialAdminPassword

进入安装插件页面,为了提高下载速度,此时我们关掉浏览器,配置国内镜像。

1
2
cd  /root/.jenkins/updates
sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

重启 Jenkins,运行管理界面,点击「安装推荐的插件」。

安装插件之后,创建管理员用户名和密码。实例配置通常保持默认。

进入主界面后,点击「Manage Jenkins」,选择「Global Tool Configuration」,配置自动化部署需要的 JDK、Maven、Git 环境。不选择 Install automatically。

点击「新建 item」,输入一个任务名称,选择「Freestyle project」,源码管理选择「Git」,填写 Repository URL,增加构建步骤选择「Execute shell」,输入下文内容,修改其中的第 6 至 8 行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/bin/bash
#maven打包
mvn clean package
echo 'package ok!'
echo 'build start!'
cd ./YOUR_PROJECT
service_name="YOUR_PROJECT"
service_port=8088
#查看镜像id
IID=$(docker images | grep "$service_name" | awk '{print $3}')
echo "IID $IID"
if [ -n "$IID" ]
then
echo "exist $SERVER_NAME image,IID=$IID"
#删除镜像
docker rmi -f $service_name
echo "delete $SERVER_NAME image"
#构建
docker build -t $service_name .
echo "build $SERVER_NAME image"
else
echo "no exist $SERVER_NAME image,build docker"
#构建
docker build -t $service_name .
echo "build $SERVER_NAME image"
fi
#查看容器id
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
echo "CID $CID"
if [ -n "$CID" ]
then
echo "exist $SERVER_NAME container,CID=$CID"
#停止
docker stop $service_name
#删除容器
docker rm $service_name
else
echo "no exist $SERVER_NAME container"
fi
#启动
docker run -d --name $service_name --net=host -p $service_port:$service_port $service_name
#查看启动日志
docker logs -f $service_name

确保 docker 已经启动起来:service docker start

点击 Name 下拉栏中的「Build Now」执行作业(任务)。

在 Build History 中,点击时间右侧的下拉栏,点击「控制台输出」。看到「Finished: SUCCESS」即表示部署成功。

如果不希望使用源码自动化部署,还可以使用控制台或 IDEA 打包。

如果使用控制台,输入 mvn clean package,在项目的 target 目录中即可找到 jar 包。

如果使用 IDEA,点击「File - Project Structure…」,选择「Artifacts」,点击「+」,选择「JAR - From modules with dependencies…」,Module 选择「YOUR_PROJECT」,Main Class 输入「com.pikanglong.YOUR_PROJECT.YOUR_PROJECTApplication」。保存后点击「Build - Build Artifacts」,点击「YOUR_PROJECT - Build」。在右侧点击「Maven」,点击「YOUR_PROJECT - Lifecycle - package」,点击运行即可成功打包。