# 用 Docker 部署 Java 应用
在本文中,您将学习如何构建用于运行Spring引导应用程序的Docker镜像。
参照示例:SpringBoot
# 前置要求
容器化spring boot应用所需环境:
需要使用版本控制工具,如:SVN/Git
需及时向版本库提交代码和从代码库中更新代码
准备一台服务器:
安装SVN/Git 客户端
安装JDK,并设置好环境变量:JAVA_HOME
安装Maven,并设置好环境变量:MAVEN_HOME
安装 Docker 环境
# 实现步骤
新建一个 SpringBoot 项目
打包 SpringBoot 项目成 jar 包
配置 pom 文件
<!-- 插件节点 -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.9</version>
<configuration>
<repository>${docker.image.prefix}/${project.artifactId}</repository>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
- 编写 Dockerfile 文件
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
- 创建、执行 pipeline
var pipeline={
stages:{
compile:{
node:'uat.example.com',
workspace:'/root/repo',
steps:{
svnCheckOut(){
$.sh('svn co svn://svn.example.com/repo/SpringBootDocker /root/repo/SpringBootDocker');
$.sh('svn update SpringBootDocker');
},
dockerBuild(){
ret=$.sh('cd SpringBootDocker;mvn install dockerfile:build');
if(ret!=0){
$.abort('编译失败')
}
}
},
},
deploy:{
node:'uat.example.com',
steps:{
stop(){
$.sh("docker stop `docker ps -q`")
},
start(){
$.sh('docker run -p 80:80 -itd springboot/springbootdocker');
$.print('访问地址:http://docker.uat.example.com/')
$.printQRCode('http://docker.uat.example.com/')
}
}
},
}
};
- 访问
[完]
# Pipeline 说明:
stages:示例有两个stage,一个是compile,另外一个是deploy。
- compile:编译,并创建Docker镜像
- deploy: 运行容器
steps:stage里的步骤。
- svnCheckOut:编译服务器从svn服务器拉取最新的代码用于编译。
- dockerBuild:构建 Docker 镜像。
- stop:删除容器。
- start: 运行容器。
$表示pipeline自身,可以调用的函数列表如下: