ポートフォワードを理解しないでハマったので記述。
タイトルの通り、「DockerでRailsとMySQLで環境を作り、DBeaverでMySQLに接続する」ということをしたかったので、それまでの道のり。
環境
- Docker
- Rails 5.2.4.1
- MySQL 5.7
- DBeaver
Dockerに接続設定をする
ホストからDockerに接続するので、「この番号のポートに接続したら、こっちのポートに転送してください」という設定をします(ポートフォワード)。
docker-compose.yml
version: '3'
services:
web:
(略)
db:
image: mysql:5.7
volumes:
- db-volume:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD:****
ports:
- 3006:3306
肝はports
です。
- (ホストから接続するポート):(転送先のポート)
上記の設定だと「3006のポートに接続したら、dockerの3306ポートに転送する」という設定です。
MySQLはデフォルトで3306ポートを使用していますので、環境構築時に特に指定していなければこのままで。
DBeaverの設定
Server Hostに「127.0.0.1」を設定。
Portは先程Docker-compose.ymlに設定した左側のポート番号。
あとはユーザー名とパスワードを設定し、テスト接続ボタンを押して繋がればOK。