0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

docker-composeを使ってMySQLをローカルで起動した

Posted at

業務でMySQLを使っていて、家の環境でも勉強できるようにしておきたいので、環境構築をしてみました。

Docker使いこなせないコンプレックスもあったので、
(というかDockerの概念くらいしか正直分かってなかった・・・)
MySQL用のコンテナを手を動かしてたててみることにしました。

お急ぎの方は記事の一番下に最終的なdocker-compose.ymlを配置したので参照してください。

前提

  • Docker Desktopを起動していること
  • macの場合は以下でインストールできるはずです。
    • brew install docker

公式のドキュメントを見つける

最初何からすればいいか分からなかったので、色々調べてたら公式のドキュメントを見つけました。

docker-composeはこちらみたいなファイルがあったので、それをそのまま使ってみる。

docker-compose.yml
# 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:rootpassword:exampleで入力するとログインできます。

image.png

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

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

なんだか最初はハードル高いと思い込んでいたのですが、
手を動かしてみたら結構簡単にできてびっくりしました。。

最後まで目を通していただきありがとうございました・・・!!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?