背景
最近、何人かの友人は、ドッカー初心者を尋ねたいdocker-compose.yml
動的マイクロサービスではなく、プロジェクトの設定ファイルにハードコードされたたびにパラメータを渡すために、その後、サービスのミラーを構築し、そして最後に設定を更新するためにパッケージ化され、一連の工程を経てリリースされ、それができます直接ではなくによってdocker-compose.yml
、環境変数に設定項目の数、そしてspringbootプロジェクト環境変数から自動的に取得?
シーン
、今Springbootプロジェクトがあること、それは、構成アイテムのデータベースが含まれていますが、別のデータベースのテスト環境(DEV \ SIT \ UAT)とし、複数のデータベースのIP、同じ画像Springbootプロジェクトを使用する場合は、必ず構成データベースを切り替えることができます単にデータベースアプリケーションがSpringbootは、外部ではなく、決め打ちを通過しなければならない設定です。
次のようにデータベース構成があるSpringbootアプリケーションは次のとおりです。
spring.datasource.url = jdbc:mysql://192.168.0.11:3306/db?useUnicode=true&characterEncoding=utf8
#配置数据库用户名
spring.datasource.username = sa
#配置数据库密码
spring.datasource.password = sa
ソリューション
使用SpEL
の表現、環境変数からデータベースの構成を動的にアクセス
次に、我々はSpringbootがSPEL表現に置き換えデータベース構成で、プロファイル情報
#配置数据库链接
spring.datasource.url = jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME}?useUnicode=true&characterEncoding=utf8
#配置数据库用户名
spring.datasource.username = ${DB_USER}
#配置数据库密码
spring.datasource.password = ${DB_PASSWORD}
ではdocker-compose.yml
、当社のデータベースパラメータの設定
version: '3'
services:
web:
restart: always
depends_on:
- db
image: springboot-app-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アプリケーションが動的に起動時間コンテナサービスでデータベース構成を取得できること