【SpringBoot框架篇】6.docker部署,并挂载配置文件到宿主机上面

1.简介

本文使用Dockerfile把springboot的jar文件构建成镜像,并且把外部配置文件挂载到了宿主机上面,方便后续更新。

2.准备一个springboot项目

2.1.项目里配置文件内容

username: localUser
password: 123456
server:
  port: 8006

2.2.编写一个web接口,用于测试重定向配置文件

package com.ljm.boot.dockerbuild;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
public class DockerBuildApplication {

    public static void main(String[] args) {
        SpringApplication.run(DockerBuildApplication.class, args);
    }

    @RestController
    public class  WebController{

        @Value("${username}")
        private String username;

        @Value("${password}")
        private String password;

        @RequestMapping("/print")
        public String printUserInfo(){
            return "User{username="+username+",password="+password+"}";
        }

    }
}

2.3.准备好构建镜像需要的文件

在这里插入图片描述

2.4.编写Dockerfile文件

#添加Java启动的必要镜像
FROM openjdk:8
#将本地文件挂载到当前容器
VOLUME   /tmp
#复制jar文件和配置文件所在的目录到容器里
ADD  my-app.jar  /app.jar
ADD  conf       /conf
#声明需要暴露的端口
EXPOSE  8006
#配置容器启动后执行的命令,并指定使用项目外部的配置文件
ENTRYPOINT  ["java","-Xms256m","-Xmx256m","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar","--spring.config.location=/conf/application.yml"]

3.构建镜像并运行

3.1.把需要构建的文件上传到服务器

在这里插入图片描述

3.2.修改配置文件内容

为了能确定是否使用了docker容器里外部配置文件,修改username属性

vi conf/application.yml
username: devUser
:wq

执行下面命令构建镜像

# -t 是指定镜像名称和版本号   myapp是镜像名, :后面的是版本号, . 代表指定当前目录的Dockerfile构建
docker build -t myapp:v1 .

看到Successfuly 就代表构建镜像成功
在这里插入图片描述

3.3.启动镜像

docker run -d -p 8006:8006  --name myapp myapp:v1

3.4.测试配置文件属性是否变化

curl 127.0.0.1:8006/print

项目里的配置文件是localUser,现在看到的是devUser,代表镜像里的jar已经使用了外部的配置文件

在这里插入图片描述

4.挂载配置文件到宿主机

实际生产环境,不可能把配置文件放到镜像里面,修改太麻烦,这个时候就需要把程序的配置文件挂载到宿主机的目录

4.1.停止并删除刚刚构建的容器

docker stop myapp
docker rm myapp

4.2.修改配置文件

把配置文件里的username改成prodUser

vi conf/application.yml
username: prodUser
:wq

4.3.构建容器并指定配置外部文件

docker run -d -p 8006:8006 -v /home/ljm/docker-build/conf:/conf --name myapp myapp:v1
参数描述(-p -v : 左边的参数都是宿主机,右边是容器)
-d守护进程的方式启动
-p把容器内的端口8006映射到宿主机的8006
-v把宿主机上的 /home/ljm/docker-build/conf挂载到容器的/conf目录上面
–name容器的名称
myapp:v1指定镜像名称和版本

4.4.测试挂载配置后的效果

curl 127.0.0.1:8006/print

看到下面的username=prodUser 代表宿主机的配置文件已经生效了.
在这里插入图片描述

4.5.再次修改配置文件

vi conf/application.yml
username: prodUser_19951224
:wq

4.6.重启容器

docker restart myapp

4.7.查看效果

看到username=prodUser19951224,代表修改宿主机的配置文件后,重启docker容器后就生效了。
在这里插入图片描述

5.关于Dockerfile中的VOLUME作用

VOLUME是指定某些目录挂载为匿名卷用的,通过执行 docker inspect myapp 可以查看挂载信息,下面的Source是宿主机的路径存储,Destination是容器里的路径,往容器的/tmp目录下写的文件会保存到Source对应的路径下
在这里插入图片描述

6.总结

  • 首先要在构建镜像的Dockerfile文件中启动jar的命令里加上
    –spring.config.location=/conf/application.yml ,指定使用容器里的/conf/application.yml作为项目的启动配置文件
  • 使用docker run 构建容器的时候, 使用 -v 命令把/conf目录挂载到宿主机的指定位置**

7.项目配套代码

gitee代码地址

创作不易,要是觉得我写的对你有点帮助的话,麻烦在gitee上帮我点下 Star

【SpringBoot框架篇】其它文章如下,后续会继续更新。

  • 11
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皓亮君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值