【SpringBoot框架篇】6.docker部署,並掛載配置文件到宿主機上面

簡介

本文使用Dockerfile把springboot的jar文件構建成鏡像,並且把外部配置文件掛載到了宿主機上面,方便後續更新。

準備一個springboot項目

項目裏配置文件內容

username: localUser
password: 123456
server:
  port: 8006

編寫一個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+"}";
        }

    }
}

準備好構建鏡像需要的文件

在這裏插入圖片描述

編寫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:v1 .

看到Successfuly 就代表構建鏡像成功
在這裏插入圖片描述

啓動鏡像

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

測試配置文件屬性是否變化

curl 127.0.0.1:8006/print

項目裏的配置文件是localUser,現在看到的是devUser,代表鏡像裏的jar已經使用了外部的配置文件
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200504221835538.png
在這裏插入圖片描述

掛載配置文件到宿主機

實際生產環境,不可能把配置文件放到鏡像裏面,修改太麻煩,這個時候就需要把程序的配置文件掛載到宿主機的目錄

停止並刪除剛剛構建的容器

docker stop myapp
docker rm myapp

修改配置文件

把配置文件裏的username改成prodUser

vi conf/application.yml
username: prodUser
:wq

構建容器並指定配置外部文件

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 指定鏡像名稱和版本

測試掛載配置後的效果

curl 127.0.0.1:8006/print

看到下面的username=prodUser 代表宿主機的配置文件已經生效了.
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200504224105474.png
在這裏插入圖片描述

再次修改配置文件

vi conf/application.yml
username: prodUser_19951224
:wq

重啓容器

docker restart myapp

查看效果

看到username=prodUser19951224,代表修改宿主機的配置文件後,重啓docker容器後就生效了。
在這裏插入圖片描述

總結

1.首先要在構建鏡像的Dockerfile文件中啓動jar的命令里加上
–spring.config.location=/conf/application.yml
指定使用容器裏的/conf/application.yml作爲項目的啓動配置文件

2.使用docker run 構建容器的時候, 使用 -v 命令把/conf目錄掛載到宿主機的指定位置

項目配套代碼

github地址
要是覺得我寫的對你有點幫助的話,麻煩在github上幫我點 Star

【SpringBoot框架篇】其它文章如下,後續會繼續更新。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章