1、前提安装Docker
在使用docker-compose之前,需要先搭建docker环境。
2、部署jar包
2.1、准备java工程
搭建一个SpringBoot项目,创建一个Controller
和application.properties
文件
application.properties:
# 创建几个变量,用于验证docker启动jar时对变量进行修改
server.port=8088
server.name="boot-demo"
file.max=10
file.min=1
Controller:
@RestController
public class Controller {
@Value("${file.max}")
private String max;
@Value("${file.min}")
private String min;
@Value("${server.name}")
private String name;
@GetMapping("test")
public String main() throws Exception {
return "Name:" + name + ",Max:" + max + ",Min:" + min;
}
}
2.2、创建Dockerfile文件
内容如:
可以直接在linux上传创建,比如:vim /home/server/boot-demo/Dockerfile
,也可以在本地创建好以后上传到服务器;
FROM java:8
# 创建工作目录
RUN mkdir -p /usr/local/application/jar /usr/local/application/logs
COPY *.jar /usr/local/application/jar/application.jar
#定义时区参数
ENV TZ=Asia/Shanghai
#设置时区
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone
# jar中自定义的变量,并且设置默认值,实际项目中没有可以不设置
ENV FILE_MAX="10" \
FILE_MIN="1"
# 工作目录(docker内部目录)
WORKDIR /usr/local/application
# 暴露端口
EXPOSE 8088
# 启动jar命令
ENTRYPOINT exec java -Dfile.max=${FILE_MAX} -Dfile.min=${FILE_MIN} -jar /usr/local/application/jar/application.jar
2.3、上传文件
将打包后的jar以及Dockerfile文件复制到服务的同一个目录下,比如:
/home/server/boot-demo
注意: 在此之前一定要保证,项目在本地能够运行
3、制作docker镜像
执行build命令:
docker build --rm -t boot-demo:version .
-t:docker镜像名称
version:表示具体的版本号
注意: 最后一定要加上小数点
验证是否成功:
存在镜像,则表示成功
`docker images`
4、启动容器
映射端口(8088为当前项目的端口)
将文件进行挂载,/home/server/boot-demo为项目目录
docker run --name boot-demo -p 8088:8088 \
-v /home/server/boot-demo/temp:/usr/local/application/temp \
-d boot-demo:1.0
在启动时,也可以对项目的配置文件参数进行修改,但是只能修改Dockerfile中存在的参数,比如:
docker run --name boot-demo -p 8088:8088 \
-v /home/server/boot-demo/logs:/usr/local/application/logs \
-e FILE_MAX="20" \
-e FILE_MIN="10" \
-d boot-demo:1.0
5、测试访问
我们以第二种,设置参数的形式进行修改参数的形式进行启动
默认清空下,FILE_MAX为10,FILE_MIN为1;如果访问时出现FILE_MAX为20,FILE_MIN为10,则表示启动成功并且自定义配置有效;
6、更新jar包
更新Controller代码:
// 在原有代码基础上,加入"更新了Jar包:"
@GetMapping("test")
public String main() throws Exception {
return "更新了Jar包:Name:" + name + ",Max:" + max + ",Min:" + min;
}
jar更新了代码,那么我们可以重新打包,并且上传到/home/server/boot-demo
下,然后在copy到容器中,上传最新jar后执行以下命令:
上传新的jar到/home/server/boot-demo
目录下,执行以下命令:
docker cp boot-demo-1.0.jar boot-demo:/usr/local/application/jar/application.jar
重启容器:
docker restart boot-demo
再次访问:
--end--