Spring Boot 项目 Docker部署,并挂载配置文件到宿主机上 | 您所在的位置:网站首页 › dockerfile挂载本地目录 › Spring Boot 项目 Docker部署,并挂载配置文件到宿主机上 |
0x01:简介
使用 Dockerfile 把 SpringBoot 的 jar 文件构建成镜像, 并且把外部配置文件挂载到了宿主机上方便后续更新。 0x02:准备一个 SpringBoot 项目 项目里配置文件内容 username: root password: root123 server: port: 8006编写一个 web 接口,用于测试重定向配置文件 package com.olive.dockerbuild; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DockerBuildApplication { public static void main(String[] args) { SpringApplication.run(DockerBuildApplication.class, args); } }控制器 package com.olive.dockerbuild.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class WebController{ @Value("${username}") private String username; @Value("${password}") private String password; @RequestMapping("/printUserInfo") public String printUserInfo(){ return "User {username=" + username + ",password=" + password + "}"; } }准备好构建镜像需要的文件 ![]() 编写 Dockerfile 文件 #添加Java启动的必要镜像 FROM java: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"]构建镜像并运行 把需要构建的文件上传到服务器 ![]() 修改配置文件内容 为了能确定是否使用了 Docker 容器里外部配置文件,修改 username 属性 vi conf/application.yml username: devUser :wq执行下面命令构建镜像 # -t 是指定镜像名称和版本号 myapp是镜像名, :后面的是版本号, . 代表指定当前目录的Dockerfile构建 docker build -t myapp:v_1.0 .看到Successfuly 就代表构建镜像成功 0x03:启动镜像 docker run -d -p 8006:8006 --name myapp myapp:v_1.0测试配置文件属性是否变化 curl 127.0.0.1:8006/printUserInfo项目里的配置文件是 localUser,现在看到的是 devUser,代表镜像里的 jar 已经使用了外部的配置文件 0x04:挂载配置文件到宿主机 实际生产环境,不可能把配置文件放到镜像里面,修改太麻烦,这个时候就需要把程序的配置文件挂载到宿主机的目录 停止并删除刚刚构建的容器 docker stop myapp docker rm myapp修改配置文件,把配置文件里的 username 改成 prodUser vi conf/application.yml username: prodUser :wq构建容器并指定配置外部文件 docker run -d -p 8006:8006 -v /usr/springboot/docker-build/conf:/conf --name myapp myapp:v_1.0参数描述(-p -v : 左边的参数都是宿主机,右边是容器) -d守护进程的方式启动-p把容器内的端口8006映射到宿主机的8006-v把宿主机上的 /usr/springboot/docker-build/conf 挂载到容器的 /conf 目录上面–name容器的名称myapp:v_1.0指定镜像名称和版本测试挂载配置后的效果 curl 127.0.0.1:8006/printUserInfo看到下面的username=prodUser 代表宿主机的配置文件已经生效了。 再次修改配置文件 vi conf/application.yml username: prodUser_good :wq重启容器 docker restart myapp查看效果 看到username=prodUser_good,代表修改宿主机的配置文件后,重启 docker 容器后就生效了。 0x05:总结 1. 首先要在构建镜像的 Dockerfile 文件中启动 jar 的命令里加上 –spring.config.location=/conf/application.yml 指定使用容器里的 /conf/application.yml 作为项目的启动配置文件 2. 使用 docker run 构建容器的时候, 使用 -v 命令把 /conf 目录挂载到宿主机的指定位置 |
CopyRight 2018-2019 实验室设备网 版权所有 |