0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

secrets と MYSQL_PASSWORD_FILE と optional:configtree と .gitignoreを使ってみた

Last updated at Posted at 2025-01-05

はじめに

自宅PCのDockerでSpring BootとMySQLの趣味管理システムを運用しようと思い、パスワードをGitHubに上げたくなかったので、調べた結果をまとめました。

同じような人は少ないかもしれませんが参考になれば幸いです。

実現したいこと

MySQLのパスワードをGitHubに上げない。

バージョン

Docker 27.4.0
Docker MySQL Image 8.4.3
Spring Boot 3.4.1
git 2.44.0
Windows 10

やりかた

概要

secrets と MYSQL_PASSWORD_FILE と optional:configtree と gitignoreを使う。

ソース

詳細

1.パスワードファイルを作成

secrets/mysql_root_password
secrets/mysql_user_password

2.docker-compose.yml の secrets に パスワードファイル を指定

docker-compose.yml
secrets:
  mysql_root_password:
    file: ./secrets/mysql_root_password
  mysql_user_password:
    file: ./secrets/mysql_user_password

3.docker-compose.yml の secrets に 2で指定した変数を指定

docker-compose.yml
    secrets:
      - mysql_root_password
      - mysql_user_password

4.docker-compose.yml の MYSQL_PASSWORD_FILE に /run/secrets/パスワードファイル を指定

docker-compose.yml
    environment:
      MYSQL_ROOT_PASSWORD_FILE: /run/secrets/mysql_root_password
      MYSQL_DATABASE: secret-demo
      MYSQL_USER: secret-demo
      MYSQL_PASSWORD_FILE: /run/secrets/mysql_user_password

5.application.yml の spring.config.import: optional:configtree: に /run/secrets を指定

application.yml
spring:
  config:
    import: optional:configtree:/run/secrets/

6.application.yml の spring.datasource.password に ${パスワードファイル} を指定

application.yml
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: secret-demo
    password: ${mysql_user_password} 

7..gitignore に パスワードのフォルダを追加

### secrets ###
/secrets/

参考資料

docker-compose の secrets

MYSQL_ROOT_PASSWORD_FILE

Spring Bootの optional:configtree

gitigonore

やりかたに辿り着いた流れ

1.docker-compose.xml にパスワードを書かないようにするためには?と調べて以下を発見。
https://qiita.com/myabu/items/89797cddfa7225ff2b5d

ふむふむと、環境変数ではなくsecretsがあることを知る。

2.application.yml にパスワードを書かないようにするためには?と調べて以下を発見。
https://stackoverflow.com/questions/70007676/how-to-handle-docker-secrets-in-application-properties-files

ふむふむと、spring.config.import と optional:configtree というモノがあることを知る。

3.spring.config.import を調べてみると、以下を発見。
https://spring.pleiades.io/spring-boot/reference/features/external-config.html

4.試してみる

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?