Dockerでローカルの開発用データベースを構築する

長いことVagrantで開発用DBをローカルに立ち上げたりしていたんですが、プロジェクト単位でDockerに移行していた。(docker-compose.yml に一緒に記述しておくと簡単にアプリケーションから接続できる。)

このようなデータなどを一時的に格納したりするお便利ローカルDBはVagrantで立ち上げていたんだけど、考えてみたらそれもDockerにできるのであった。(JavaのようなIDEで立ち上がるものはなんとなくVMに接続していた。)

docker-compose.yml

version: '3.5'

services:
  db:
    image: mariadb
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE: example
      MYSQL_USER: user
      MYSQL_PASSWORD: password
      MYSQL_ROOT_PASSWORD: password

標準入力でSQLを流し込む

セットアップ用のSQLを流すときは、docker-compose execを使って標準入力で流し込めます。

cat schema.sql | docker-compose exec -T db mysql -u user example -ppassword

クライアントなしでDBに接続する

ローカルにmysqlクライアントがなくても接続できます。

docker-compose exec db mysql -u user example -ppassword

外部から接続する

ホストはlocalhostではなく0.0.0.0です。

mysql -h 0.0.0.0 -u user example -ppassword

おわり

まあめったに使わないんだけど、Ubuntu 19.10あたりにしたらVagrant動かなくなっちゃってやめました。あとは検証用VM(Windowsなど)をVagrantで立ち上げられるようにしていたので、そのへんはまだVMで立ち上げないとな。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA