Docker composeでSpringとMySQLのコンテナを立ち上げ接続させた時に行ったこと

docker-compose.yml

docker-compose.ymlは以下のような感じになりました. とりあえずMySQLのホスト名はdbserverにし,データベースをdbとしました. そこにSpringがアクセスします.

version: "3.1"
services:
    dbserver:
        image: mysql
        ports:
            - "3306:3306"
        hostname: dbserver
        volumes:
            - ./mysql/volumes:/var/lib/mysql
        environment:
            MYSQL_DATABASE: db
            MYSQL_USER: user
            MYSQL_PASSWORD: password
            MYSQL_ROOT_PASSWORD: PASSWORD
    java:
        image: java
        ports:
         - "8080:8080"
        volumes:
         - ./spring:/usr/src/spring
        tty: true
        command:
            bash -c "cd /usr/src/spring && ./gradlew build && java -jar build/libs/spring-0.0.1-SNAPSHOT.jar"

Springの設定ファイル

Springの設定ファイル(src/main/resources/application.yml)は以下のようになりました.

spring:
  datasource:
    driverClassName: com.mysql.jdbc.Driver
    url:  jdbc:mysql://dbserver:3306/db
    username: root
    password: PASSWORD
security:
    basic:
        enabled: false

これでSpringを起動するとつながりました. いろいろ調べましたが,バージョン3以降ではコンテナ同士のリンクが必要ないらしいです.

まとめ

hostnameで接続できるので,これは覚えといたほうが良いかもしれません.