開発環境を構築する中でデータベースは必ずと言ってもいいくらい必要になります。
WSL2のディストリビューションにDockerを入れると
とても簡単に短時間で安定したデータベース利用環境を構築することができたので、
今回は以前投稿したWSL2を利用したLinux開発環境にDockerをインストールして
データベースの環境を構築した際の手順をご紹介いたします。
構築するデータベースとしてはRDBの例としてMySQL、NoSQLの例としてRedisを構築していきます。
- MySQL
- Redis
前提条件
以下の記事に従ってWSL2を利用したLinux開発環境の環境が構築されていること。
実施環境
- OS:Windows 10 Home バージョン 21H1
- ディストリビューション:Ubuntu 20.04 LTS
(推奨)作業用ターミナルとしてはWindowsターミナルの使用をお勧めします。
Dockerのインストール
Dockerのインストール手順についてはdocker docsに手順が記載されているので、
基本的にはdocsの手順に従いインストールを進めていきます。
Docker Engine インストール
リポジトリのセットアップ
1. aptパッケージの更新
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
2. GPG 鍵の追加
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
3. 安定版(stable)リポジトリのセットアップ
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
インストール
1. aptパッケージの更新
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
Linux インストール後の作業
Docker管理のユーザ追加
ログインユーザにdockerコマンドの実行権限を付与してsodo無しでコマンド実行できるようにします。
1. dockerグループの作成
sudo groupadd docker
2. グループへのユーザ追加
sudo gpasswd -a $USER docker
※ docker docsではusermodコマンドを利用してグループ追加を行っていますが、破壊的なコマンドのため、ここではgpasswdコマンドを利用してユーザ追加を行います。
Docker自動起動設定
WSLを起動するたびにDockerを起動するのはとても煩わしいので自動起動設定を行います
serviceコマンドのsudo権限追加
visudoを使いsudoersファイルを更新してログインユーザにsudo権限を追加します。
1. visodo起動
sudo visudo
2. Dockerデーモン起動設定追記
最後の行に以下の設定を追加します。
※ XXXXXX部はユーザ名に置き換える
XXXXXX ALL=(ALL:ALL) NOPASSWD: /usr/sbin/service docker start
3. 保存
3.1. 編集終了
メニューに従い次のコマンドを入力して編集を終了します。
[Ctrl] + [X]
3.2. 確認
メニューに従い次のコマンドを入力して設定を保存します。
[Y]
3.3. 終了
ファイル名はそのままに次のコマンドを入力して保存します。
[Enter]
Dockerデーモン起動設定
.bashrcの最後の行に以下の設定を追加します。
- .bashrcの編集
vi .bashrc
- 設定
if [ $(service docker status | awk '{print $4}') = "not" ]; then
sudo service docker start > /dev/null
fi
設定反映
コマンドプロンプトを起動して次のコマンドを入力してwslをシャットダウンします。
wsl --shutdown
再度wslにログインすることでDockerデーモンが自動で起動しsudo無しでdockerコマンドが実行可能となります。
Dockerイメージの取得
Dockerイメージを取得してデータベース環境を構築していきます。
以下の手順ではイメージはDocker Hubより取得します。
Docker Hubにはイメージ取得(Pull)の回数制限があるため、
同一IPアドレス環境内でイメージ取得が頻繁に行われている場合、
上限に達している可能性があります。
その際にはDocker Hubに登録したユーザーでログインした上で実施する必要があります。
(無料ユーザでも可)
Redis環境構築
イメージ取得
次のコマンドを実行してRedisのイメージを取得します。
docker pull redis
イメージ起動
次のコマンドを実行してRedisのイメージを起動します。
docker run -it --name redis -d -p 6379:6379 redis:latest
コンテナ自動起動設定
次のコマンドを実行することでWSLを再起動した際にコンテナが自動で起動します。
docker update --restart=always redis
Redisコマンドラインインタフェースインストール
Redisのコマンドラインインタフェースであるredis-cliをインストールします。
redis-cliインストール
次のコマンドを実行してredis-cliをインストールします。
sudo apt install redis-server
接続確認
次のコマンドを実行して接続を確認します。
redis-cli
127.0.0.1:6379に接続され対話モードでCLI実行可能となれば構築完了です。
MySQL環境構築
イメージ取得
次のコマンドを実行してMySQLのイメージを取得します。
docker pull mysql
イメージ起動
次のコマンドを実行してMySQLのイメージを起動します。
docker run -it --name mysql -e MYSQL_ROOT_PASSWORD=mysql -d -p 3306:3306 mysql:latest
コンテナ自動起動設定
次のコマンドを実行することでWSLを再起動した際にコンテナが自動で起動します。
docker update --restart=always mysql
MySQLクライアントインストール
MySQLのクライアントをインストールします。
コマンド確認
次のコマンドを実行することでMySQLクライアントのインストールを促されます。
mysql
※ 2022年2月時点では次のコマンドが表示されます。
sudo apt install mysql-client-core-8.0 # version 8.0.27-0ubuntu0.20.04.1, or
sudo apt install mariadb-client-core-10.3 # version 1:10.3.32-0ubuntu0.20.04.1
インストール
次のコマンドを実行してMySQLクライアントをインストールします。
sudo apt install mysql-client-core-8.0
接続確認
次のコマンドを実行して接続を確認します。
mysql -u root -p -h 0.0.0.0 -P 3306
接続に成功し対話モードでCLI実行可能となれば構築完了です。
参考
-
docker docs
-
docker hub