Windows11 で Docker をインストールして MySQL 実行してみる
手順を大雑把に書くと以下の感じで進める
- PowerShell 7 インストール ※Windows PowerShell じゃない、次の処理でエラーでた...
- WSL2 インストール(Ubuntu v22.04 インストール)
- Docker インストール
- MySQL の Docker Compose 作成・実行・停止
PowerShell 7 インストール
基本的には以下の公式サイトを参考にインストール
https://learn.microsoft.com/ja-jp/powershell/scripting/install/installing-powershell-on-windows?view=powershell-7.3
-
インストールバージョン確認 (今回は 7.3.0.0 で実施してます)
PowerShellwinget search Microsoft.PowerShell
-
インストール実行
PowerShellwinget install --id Microsoft.Powershell --source winget
-
念のため再起動
WSL2 インストール(Ubuntu v22.04インストール)
PowerShell でコマンド一つで終了!!
インストール後に再起動して Ubuntu の初期設定をする
参考としてMSの公式サイト: WSL を使用して Windows に Linux をインストールする
-
インストール実行
PowerShellwsl --install
-
再起動して Ubuntu の初期設定
- ユーザ/パスワード:任意(なんでもOK, ユーザ/パスワードを忘れないように注意)
-
バージョン確認 (今回は 22.04 で実施してます)
Ubuntucat /etc/os-release
-
root ユーザに変更 (Windows の管理者実行みたいなやつ)
パスワードは Ubuntu の初期設定で設定したものを使うUbuntusudo -su root
-
アップデート実行 ※失敗が残った時は再起動して再実行
Ubuntu# コマンドは二つ sudo apt update -y sudo apt upgrade -y
-
念のため再起動
Docker インストール
Ubunts に Docker, Docker Compose をインストールしていく
-
root ユーザに変更 (Windows の管理者実行みたいなやつ)
パスワードは Ubuntu の初期設定で設定したものを使うUbuntusudo -su root
-
DockerインストールのGCP鍵取得
Ubuntucurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
-
安定版(stable)リポジトリをセットアップ
Ubuntuecho "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
-
パッケージ更新
Ubuntusudo apt update
-
Dockerインストール実行
Ubuntusudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
-
iptables, ip6tables 設定変更
Ubuntu# コマンド2つ実行 sudo update-alternatives --set iptables /usr/sbin/iptables-legacy sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
-
root ユーザに変更 (Windows の管理者実行みたいなやつ)
パスワードは Ubuntu の初期設定で設定したものを使うUbuntusudo -su root
-
Docker Compose インストールディレクトリ作成
Ubuntusudo mkdir -p /usr/local/lib/docker/cli-plugins
-
Docker Compose インストール実行
Ubuntusudo curl -SL https://github.com/docker/compose/releases/download/v2.4.1/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose
-
シンボリックリンク設定
Ubuntusudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose sudo ln -s /usr/local/lib/docker/cli-plugins/docker-compose /usr/bin/docker-compose
-
Docker, Docker Compose バージョン確認 (今回は Docker 23.0.1, Docker Compose 2.4.1 で実施してます)
Ubuntudocker --version docker-compose --version
MySQL の Docker Compose 作成・実行・停止
Docker Compose の設定ファイルを作って実行、停止する
-
root ユーザに変更 (Windows の管理者実行みたいなやつ)
パスワードは Ubuntu の初期設定で設定したものを使うUbuntusudo -su root
-
Docker Compose を作るディレクトリを作成・移動(任意でどこでもOK)
Ubuntu# 例はかなり適当... ディレクトリ名は慎重に!!! mkdir -p tekito1/tekito2/tekito3 cd tekito1/tekito2/tekito3
-
Docker Compose 設定ファイル作成(docker-compose.yml, .env の2つ)
docker-compose.ymlversion: '3' services: db: image: mysql:8 container_name: mysql restart: always environment: MYSQL_ROOT_PASSWORD: ${ROOT_PASS} MYSQL_DATABASE: ${DB_NAME} MYSQL_USER: ${DB_USER} MYSQL_PASSWORD: ${DB_PASS} TZ: ${TZ} ports: - ${DB_PORT}:3306 volumes: - db-store:/var/lib/mysql - ./conf/my.cnf:/etc/mysql/conf.d/my.cnf volumes: db-store:
.envROOT_PASS=root DB_NAME=WEB_APP_DB DB_USER=webapp DB_PASS=webapp DB_PORT=13306 TZ=Asia/Tokyo
-
Docker 起動
Ubuntuservice docker start
-
Docker Compose 起動・停止 etc...
Ubuntu# 起動 docker-compose up -d # 停止 docker-compose down # 起動プロセス確認 docker-compose ps # 起動コンテナにログイン ( ${serviceName} はここだと db ) docker-compose exec ${serviceName} /bin/bash
※ 参考 Docker の MySQL にアクセス(ローカルJavaなど)
port, user, password などを Docker Compose の設定に合わせる感じでコネクション生成
String dbUrl = "jdbc:mysql://localhost:13306/WEB_APP_DB";
String dbUser = "webapp";
String dbPassword = "webapp";
Class.forName("com.mysql.cj.jdbc.Driver");
Connection connection = DriverManager.getConnection(dbUrl, dbUser, dbPassword);
// 以降は SQL 実行などやってく感じ