springboot部署、更新基于linux系统docker容器
Dockerfile部署、更新jar包
- 创建Dockerfile文件脚本如下:
FROM java:8
EXPOSE 8900
VOLUME /tmp
ADD bh-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
说明:
FROM java:8 :java8基础镜像
ADD bh-0.0.1-SNAPSHOT.jar app.jar RUN bash -c 'touch /app.jar':拷贝app.jar到容器
-Djava.security.egd=file:/dev/./urandom:加快随机数生产
- docker build创建镜像,注意后面 .符号
docker build -t bh -f path/Dokcerfile .
-t:指定镜像名称
-f:指定Dockerfile文件路径
bh-0.0.1-SNAPSHOT.jar:springboot打包工程
查看镜像
- 运行容器
docker run --name=bh -d -p 8900:8900 -v /root/docker/package/bh-0.0.1-SNAPSHOT.jar:/app.jar --privileged=true bh
说明:
/root/docker/package/bh-0.0.1-SNAPSHOT.jar是挂载目录,更新j项目直接替换jar文件即可
springboot 工程代码
@RestController
public class HomeController {
@GetMapping("/index")
public static String hello(){
return "hello world!";
}
}
查看结果
现在修改hello函数返回字符串"hello word! new ",打包上传挂载目录(上传前先停止容器,然后启动容器)
查看结果
只是用于jar版本不变情况下,否则通过Dockerfile调用sh脚本(运行jar)文件(自行百度查一下)
Tomcat war包部署更新
- 容器tomcat的webapps和logs目录和主机挂载,便于维护更新war包(否则每次更新,执行命令docker cp name:/usr/local/tomcat/webapps替换文件)
- 运行tomcat(先删除之前容器)
docker run -d -p 8091:8080 --name tm -v /opt/tom1/webapps:/usr/local/tomcat/webapps -v /opt/tom1/conf:/usr/local/tomcat/conf -v /opt/tom1/logs:/usr/local/tomcat/logs --restart=always --privileged=true tomcat:8.5.4
说明:
--restart=always: 随docker容器自启
--privileged=true :root文件权限
war包上传至目录,tomcat会自动解压。
查看结果