ローカルDB環境を用意する必要があったため、Docker Composeを利用して手早く構築してみます。
Windowsを使用しています。
準備
Docker Desktopをインストール。(任意)
Ubuntuをインストール。
構築
docker-dbディレクトリを作成し、配下にdocker-compose.ymlを作成します。

作成した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からも起動、停止や状態確認ができます。

おまけ
構築で手間がかかった部分です。
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を更新しておくべきでした。