本文所有涉及项目名的地方均为 YOUR_PROJECT
,请自行修改。
在项目的根目录创建 Dockerfile 文件。
1 2 3 4 FROM openjdk:8 -jdk-alpineVOLUME /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」,点击运行即可成功打包。