2
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?

WSL2 + Docker ComposeでローカルMySQL環境を構築する

2
Posted at

ローカルDB環境を用意する必要があったため、Docker Composeを利用して手早く構築してみます。
Windowsを使用しています。

準備

Docker Desktopをインストール。(任意)

Ubuntuをインストール。

構築

docker-dbディレクトリを作成し、配下にdocker-compose.ymlを作成します。
image.png

作成したdocker-compose.ymlに以下を記述します。

version: "3.9"

services:
  db:
    image: mysql:8.0
    container_name: local-mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: sample
      MYSQL_USER: test
      MYSQL_PASSWORD: testpass
    ports:
      - "3306:3306"
    volumes:
      - mysql-data:/var/lib/mysql

volumes:
  mysql-data:

services:サービス(コンテナ)を記載する。

db:サービス名「db」。
DBに限らず、わかりやすい命名をした方が良いそうです。

image:コンテナを立ち上げるための既存テンプレートを指定する箇所。
「mysql:8.0」はMySQL公式のイメージです。「8.0」バージョンを指定しています。

container_name:コンテナ名。
起動中のコンテナの中でコマンドを実行する「docker exec」を実行するとき、コンテナ名かコンテナIDを指定する必要があります。
コンテナ名を決めておいた方が、いちいちIDを確認せずに済むので便利です。

environment:環境変数。
ここではrootパスワード、データベース名、ユーザ名、ユーザパスワードを指定しています。

ports:ホスト側とコンテナ側のポートを紐づけるポート設定。
"3306:3306" の場合、ホストからlocalhost:3306で接続できます。

volumes:データをコンテナの外に保持するための設定。
ホストディレクトリ(mysql-data)にコンテナのディレクトリ(/var/lib/mysql)を紐付けてデータを管理、保持しています。
謝ってコンテナを削除してしまっても安心です。

起動

docker-compose.ymlができたらコンテナを起動します。

PS Microsoft.PowerShell.Core\FileSystem::\\wsl.localhost\Ubuntu\home\xxx\docker-db> docker compose up -d
time="2025-12-21T19:48:50+09:00" level=warning msg="\\\\wsl.localhost\\Ubuntu\\home\\xxx\\docker-db\\docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion"
[+] Running 14/14
 ✔ db Pulled                                                                                                                                                                            30.3s 
[+] Running 3/3
 ✔ Network docker-db_default    Created                                                                                                                                                  0.0s 
 ✔ Volume docker-db_mysql-data  Created                                                                                                                                                  0.0s 
 ✔ Container local-mysql        Started  

起動を確認します。

  PS Microsoft.PowerShell.Core\FileSystem::\\wsl.localhost\Ubuntu\home\xxx\docker-db> docker ps
CONTAINER ID   IMAGE       COMMAND                   CREATED          STATUS          PORTS                                         NAMES     
0ee24250779a   mysql:8.0   "docker-entrypoint.s…"   18 seconds ago   Up 17 seconds   0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp   local-mysql

DBに入れることも確認します。

PS Microsoft.PowerShell.Core\FileSystem::\\wsl.localhost\Ubuntu\home\xxx\docker-db> docker exec -it local-mysql mysql -utest -ptestpass sample
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.44 MySQL Community Server - GPL

Copyright (c) 2000, 2025, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

あとはテーブルを作るなり、ローカルから接続するなりができればよいです。
以下で確認をやっています。

GOのORM GORM + genを使ってみる

以後はDocker Desktopからも起動、停止や状態確認ができます。
image.png

おまけ

構築で手間がかかった部分です。

Ubuntuを入れた後にwslを更新。

C:\Windows\System32\wsl.exe --update
C:\Windows\System32\wsl.exe --shutdown

Ubuntuが立ち上がらないので原因を探ったところ、VERSIONが食い違っていたため、2を規定にして修正。

PS C:\Users\linen> C:\Windows\System32\wsl.exe -l -v
  NAME              STATE           VERSION
* Ubuntu            Stopped         1
  docker-desktop    Running         2
PS C:\Users\linen> C:\Windows\System32\wsl.exe --set-default-version 2
WSL 2 との主な違いについては、https://aka.ms/wsl2
 を参照してください
この操作を正しく終了しました。
PS C:\Users\linen> C:\Windows\System32\wsl.exe --set-version Ubuntu 2
WSL 2 との主な違いについては、https://aka.ms/wsl2
 を参照してください
変換中です。これには数分かかる場合があります。
この操作を正しく終了しました。

今度はdocker desktop側でエラーが起きてどうにもならず、結局Ubuntuを入れなおすことに。

Ubuntu を削除
C:\Windows\System32\wsl.exe --unregister Ubuntu
wsl停止
C:\Windows\System32\wsl.exe --shutdown

入れなおしたら2で統一されました。

PS C:\Users\linen> C:\Windows\System32\wsl.exe -l -v
  NAME              STATE           VERSION
* docker-desktop    Running         2
  Ubuntu            Running         2

あれこれする前にwslを更新しておくべきでした。

2
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
2
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?