LoginSignup
10
4

More than 3 years have passed since last update.

application.propertiesの設定を環境変数を用いてlocal起動とDocker起動で切り替える

Last updated at Posted at 2020-04-30

はじめに

下記の記事からの補足になる
【IntelliJ + Docker (APP+DB) + SpringBoot (Maven) 環境構築】
https://qiita.com/SSM3G/items/bd61970648d94ccb691a

docker-compose.ymlに環境変数を記載

environmentでDockerコンテナを起動する際に渡す環境変数を記述できる

docker-compose.yml
version: '3'
services:
  app:
    image: openjdk:14-jdk-alpine
    ports:
      - "80:8080"
    volumes:
      - .:/app
    working_dir: /app
    command: ./mvnw spring-boot:run
    environment:
      DATASOURCE: jdbc:mysql://db:3306/sample
  db:
# 省略

application.propertiesに環境変数を記載

下記部分
spring.datasource.url=${DATASOURCE:jdbc:mysql://localhost:3306/sample}

application.properties
spring.datasource.url=${DATASOURCE:jdbc:mysql://localhost:3306/sample}
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

${環境変数:デフォルト値}と記載
環境変数が設定されている場合は環境変数を読み込む
設定されていない場合はデフォルト値を読み込む

SpringBoot起動

ローカル起動

環境変数は何も設定していないため
デフォルト値のjdbc:mysql://localhost:3306/sampleを読み込む

Docker起動

docker-compose.ymlでDATASOURCEという名で環境変数を設定しているため
appのコンテナ内ではこの環境変数が適応される

1.コンテナ内でSpringBootを起動
2.コンテナ内のapplication.propertiesを読み込む
3.環境変数のjdbc:mysql://db:3306/sampleを読み込む

screenshot.73.jpg
setで環境変数を確認したところ、ちゃんと設定されていました

おわり

${環境変数:デフォルト値}の書き方が全然わからなくてハゲそうだった
SprinBoot application.properties 環境変数 切り替え 変数 リテラル ${} シェル変数 とかで色々調べちまった

10
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
4