<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Spring Boot 項目 Docker部署,并掛載配置文件到宿主機上

          共 3820字,需瀏覽 8分鐘

           ·

          2021-04-08 23:08

          點擊上方“程序員大白”,選擇“星標”公眾號

          重磅干貨,第一時間送達

          0x01:簡介

          使用 Dockerfile 把 SpringBoot 的 jar 文件構建成鏡像, 并且把外部配置文件掛載到了宿主機上方便后續(xù)更新。


          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
          #配置容器啟動后執(zhí)行的命令,并指定使用項目外部的配置文件
          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

          執(zhí)行下面命令構建鏡像

          # -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:掛載配置文件到宿主機

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

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

          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 目錄掛載到宿主機的指定位置


          國產小眾瀏覽器因屏蔽視頻廣告,被索賠100萬(后續(xù))

          年輕人“不講武德”:因看黃片上癮,把網站和786名女主播起訴了

          中國聯(lián)通官網被發(fā)現含木馬腳本,可向用戶推廣色情APP

          張一鳴:每個逆襲的年輕人,都具備的底層能力




          ,,西,[],


          瀏覽 134
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费操逼视频日韩 | 亚洲中文无码在线观看 | AV无码国产 | 青草在线视频 | 天天日天天综合 |