Docker如何給Springboot專案動態傳參

2021-10-03 20:29:20 字數 1774 閱讀 1198

最近有些初學docker的朋友問到,想通過docker-compose.yml來動態給微服務傳參,而不是每次都要在專案配置檔案硬編碼,然後構建服務映象,最後打包發布經過一些列流程才能更新配置,那能不能直接通過docker-compose.yml裡把一些配置項放到環境變數,然後springboot專案自動從環境變數獲取引數呢?

假設現在有乙個springboot專案,它裡面有乙個資料庫的配置項,但是不同的資料庫測試環境(dev\sit\uat),資料庫ip有多個,想使用同乙個springboot專案映象,可以隨時切換資料庫配置,簡單來說就是你的springboot應用的資料庫配置應該是通過外部傳入,而不是hardcode.

springboot應用裡有個資料庫配置如下:

spring.datasource.url = jdbc:mysql:

#配置資料庫使用者名稱

spring.datasource.username = sa

#配置資料庫密碼

spring.datasource.password = sa

利用spel表示式,動態從環境變數獲取資料庫配置

接下來我們在springboot配置檔案把資料庫配置用spel表示式替換

#配置資料庫鏈結

spring.datasource.url = jdbc:mysql://$

:$/$?useunicode=true&characterencoding=utf8

#配置資料庫使用者名稱

spring.datasource.username =

$#配置資料庫密碼

spring.datasource.password =

$

docker-compose.yml配置我們的資料庫引數

version

:'3'

services

:web

:restart

: always

depends_on

:- db

image

build

: . ports

:- 8080:

8080

environment

:- db_host=192.168.0.11

- db_port=3306

- db_user=root

- db_password=123456

- db_name=db

networks

:- credit-facility-net

deploy

:mode

: replicated

replicas:3

restart_policy

:condition

: on-failure

delay

: 5s

max_attempts:3

update_config

:parallelism:1

delay

: 10s

這樣我們的springboot應用就可以在啟動容器服務的時候動態獲取資料庫配置

spring 如何給靜態變數注入值

有一次在專案中有乙個工具類的屬性是static,我造仿別人的注入方式也試著給我自己在工具類裡定義的變數進行注入,結果發現變數還是null,倒騰了半天都沒倒騰出來。正好在下班的時候靈光一閃,發現是不是因為變數是static的原因導致spring忽略掉次變數。因為靜態變數不屬於物件,只屬於類,也就是說在...

Spring給屬性賦值

在spring中,我們給屬性賦值一般使用 value註解。按功能分可以將 value分為三類 value 張三 private string name value private int age 這裡賦值18 value private string clname cname.properties ...

Docker學習之給Docker配置映象加速 5

ubuntu系統環境介紹介紹 ubuntu版本 18.04.1 系統配置 64位 linux核心 5.3.0 42 generic 一般情況下預設安裝的docker沒有daemon.json,我們可以通過以下命令進行新建daemon.json檔案 acestang acestang sudo vim...