java项目在linux环境下部署(Docker容器)下

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文件路径


2.png

bh-0.0.1-SNAPSHOT.jar:springboot打包工程
查看镜像


3.png
  • 运行容器
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!";
    }
}

查看结果


4.png

现在修改hello函数返回字符串"hello word! new ",打包上传挂载目录(上传前先停止容器,然后启动容器)
查看结果


4.png

只是用于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会自动解压。


Snipaste_2021-11-04_14-17-01.png

查看结果


Snipaste_2021-11-04_14-18-31.png

你可能感兴趣的:(java项目在linux环境下部署(Docker容器)下)