業務でMySQLを使っていて、家の環境でも勉強できるようにしておきたいので、環境構築をしてみました。
Docker使いこなせないコンプレックスもあったので、
(というかDockerの概念くらいしか正直分かってなかった・・・)
MySQL用のコンテナを手を動かしてたててみることにしました。
お急ぎの方は記事の一番下に最終的なdocker-compose.yml
を配置したので参照してください。
前提
- Docker Desktopを起動していること
- macの場合は以下でインストールできるはずです。
brew install docker
公式のドキュメントを見つける
最初何からすればいいか分からなかったので、色々調べてたら公式のドキュメントを見つけました。
docker-compose
はこちらみたいなファイルがあったので、それをそのまま使ってみる。
# Use root/example as user/password credentials
version: '3.1'
services:
db:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
adminer:
image: adminer
restart: always
ports:
- 8080:8080
上記をdocker-compose.yml
という名前で保存して、docker-compose up -d
を実行すればOK。
自分は以下エラーが起きました。
ERROR: no matching manifest for linux/arm64/v8 in the manifest list entries
M1チップだとでるエラーみたいです。以下をservices.db
配下に追記します。
platform: linux/x86_64
上記を追加して、再度docker-compose up -d
を実行するといろいろダウンロードがはじまります。すげー。
これで終わってしまった。知ってれば一瞬だなぁと感心しました・・・
adminerを使ってアクセスしてみる
docker-compose.yml
に書いてあるAdminer
でDBを閲覧できるものみたいで、コンテナ起動後にhttp://localhost:8080
にアクセスするとAdminer
の画面が表示されます。
user:root
、password:example
で入力するとログインできます。
dockerコンテナに入らずともmysqlに繋がるようにする
cliで操作できるようにしたかったのですが、いちいちdockerに入るのも面倒だったので、ローカルから繋げられるようにしました。
ports
に以下を追加。
ports:
- 3306:3306
これで、cliから入れるようになりました。以下で接続できるはずです。
mysql -uroot -pexample -h 127.0.0.1
mysqlクライアントのインストールがまだであれば、以下コマンドでインストールできるはずです。
brew install mysql-client
export PATH="/opt/homebrew/opt/mysql-client/bin:$PATH"
最終的なdocker-compose.yml
# Use root/example as user/password credentials
version: '3.1'
services:
db:
platform: linux/x86_64 # M1チップ対応のため追記
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
ports:
- 3306:3306
adminer:
image: adminer
restart: always
ports:
- 8080:8080
なんだか最初はハードル高いと思い込んでいたのですが、
手を動かしてみたら結構簡単にできてびっくりしました。。
最後まで目を通していただきありがとうございました・・・!!