前提・実現したいこと
JavaでWebシステムを開発しようとしています。
今後の開発開始に使えるよう、認証機能までを持ったブランクプロジェクトを作って置きたいと考えています。
構成
- Docker
- compose
- JDK8+Maven Dockerイメージ
- Spring Boot, MyBatis, Thymeleaf, Log4J2
- MySQL公式Dockerイメージ
- PHPMyAdmin 公式Dockerイメージ
発生している問題・エラーメッセージ
Unable to create initial connections of pool. com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
WebアプリからDBへのコネクション取得に失敗しています。
PHPMyAdminからはDBへアクセスできているので、Docker composeの誤記は考えにくいです。
該当のソースコード
version: '3' services: db: image: mysql:5.7.21 hostname: dbserver ports: - "3306:3306" volumes: - ./db_data:/var/lib/mysql environment: - MYSQL_ROOT_USER=root - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=myproject_db app: image: jamesdbloom/docker-java8-maven ports: - "8080:8080" volumes: - .:/app working_dir: /app links: - db command: ./mvnw spring-boot:run phpmyadmin: image: phpmyadmin/phpmyadmin ports: - "8888:80" volumes: - "./phpmyadmin/sessions:/sessions" environment: - PMA_ARBITRARY=1 - PMA_HOST=db - PMA_USER=root - PMA_PASSWORD=root links: - db
# DatSource # ---------------------------------------- spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://dbserver:3306/myproject_db spring.datasource.username=root spring.datasource.password=root
@Mapper public interface UserMapper { // アカウントを登録する public int insert(User user); // アカウント情報を更新する public int updateByUid(Integer uid, User user); // アカウントを論理削除する public int deleteLogicallyByUid(Integer uid, Integer delFlag); // アカウントを検索する public List<User> findAll(); public User searchByUid(Integer uid); public User searchByEmail(String emailAddress); public int isExists(User user); }
試したこと
設定ファイルの形式を変えてみたり、ネットで検索して見つけた方法を試してみました。
混乱しているのが、
ネットではH2などの組み込み系DBで構築する方法であったり、Springの設定方法とSpring Bootの設定方法(自動設定もできる)、SpringのDBアクセスの書き方でJDBC Template, JPA, MyBatisなど組み合わせが多く、参考にできる構成が見つからないというのがあります。
知見のある方にぜひご指導いただきたいです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。