最简捷的docker 部署 springboot项目外部yml

第1步:安装Docker,略;

第2步:下载openjdk:

docker pull openjdk

第3步:查看下载后的openjdk,应如图所示:

最简捷的docker 部署 springboot项目外部yml_第1张图片

 第4步:创建工作目录

在工作目录下,创建工作区:

我的工作区设置在/home/work,

在work目录下,创建三个目录,分别是:

conf,jar,logs,目录结构如图:

最简捷的docker 部署 springboot项目外部yml_第2张图片其中conf目录放置项目的yml和其他配置xml文件,jar目录放置打包jar文件,logs目录放置将来的logs文件。

第5步:在work目录下创建Dockerfile文件,内容如下:

FROM docker.io/openjdk
EXPOSE 8080
ENTRYPOINT ["java","-jar","/jar/app.jar","--logging.config=/conf/logback-spring.xml","--spring.config.location=/conf/application.yml"]

(其中的xml文件和yml文件很常规,大家肯定知道是什么),注意,最后一行,/jar/app.jar,表明,将来容器将运行/jar/app.jar文件。而这个文件将会映射到宿主机上。/conf/下的其他两个文件也是同理。

第6步:进行工程打包,其中的pom.xml文件,需要加入以下插件:


    
        
            org.springframework.boot
            spring-boot-maven-plugin
            
                
                    
                        repackage
                    
                
            
        
    
    
        
            true
            src/main/resources
            
                **/*.yml
            
        
    

 第7步:上传文件。

将打包好的jar文件,命名为app.jar,上传至/home/work/jar目录下。并将准备的好的application.yml和日志配置文件logback-spring.xml上传到conf目录下。

第8步:使用docker,根据Dockerfile,创建一个工程镜像。

docker build -t work/mywork:20201231 --rm=true  .

 注意:

1、work/mywork:20201231,这个名字可以按照    项目/模块(微服务):日期,这样看起来比较清晰,不容易混乱。也可以随便起

2、--rm=true是为了删除制作镜像过程中的临时文件

3、最后一个“.”是不可以省略的。

此刻,执行“docker images”,可以看到自己刚刚制作好的镜像。

第9步:使用镜像,创建容器:

docker run -dit --name mywork -p 8080:8080 -v /home/work/conf:/config -v /home/work/jar:/jar   -v /home/work/logs:/logs work/mywork:20201231

-v是将宿主机上的目录映射到容器上,因此容器在执行java -jar  /jar/app.jar 时,其实加载的就是宿主机上的jar,访问的也是宿主机conf目录下的application.yml文件。

第10步:用docker ps查看容器的运行状况。

(如果容器启动失败,可用docker ps -a查看容器状态。)

如果上面的操作都没问题,此刻肯定是可以成功运行了。

以后无论是更新jar,还是修改yml文档,都直接在宿主机上修改,然后,重新启动容器即可。

docker restart  容器名或容器id

最后,可用以下命令查看容器的日志,也可以直接到logs目录下,打开log文件,查看运行结果:

docker logs -f -t --since=60m  xxxxxxxx(容器名或容器id)    #这是查看最近60分钟之内的日志,时间可以更改

上述过程,亲手在两台服务器上部署成功,也可以使用docker-compose部署,整个过程非常简单有效。

 

2020年12月31日最后一天,算是献礼吧

 

 

 

 

 

你可能感兴趣的:(Java,java)