はじめに
この記事ではデータベースの操作を練習したい初学者の方に向けて、Dockerを用いて環境構築を行う手順を紹介します。
サクッと環境構築ができて、データベースの操作も学べ、しかもDockerの勉強にもなるような、一石三鳥の記事となっています。
では、やっていきましょう!( ^ω^ )
注意!
コマンドの中に () がついている箇所が複数あります。
それらについてはご自身で指定して、忘れないようにメモなどするようにしてください。
また複数行にわたるコマンドの際は、エディタで編集してから貼り付けるなどしてください。
※ 一応、()を外しただけでもちゃんと動くようにはなっています。
1. Docker Desktopのインストールと実行
まず「Docker Desktop」をインストールする必要があります。
以下のリンクから最新版をダウンロードしてインストールしてください。
Download Docker Desktop | Docker
インストールが完了したら、Docker Desktopを起動してください。
起動すると画面上部のバーにDockerのアイコンが表示されます。
2. MySQLのイメージを取得
次にMySQLのイメージを取得します。ターミナルで以下のコマンドを実行して、最新のMySQLイメージを取得しましょう。
docker pull mysql:latest
ちゃんとpullできているか、下記のコマンドで確認してみましょう。
docker images
REPOSITORYのところに mysql があればOKです!
3. ボリュームの作成
MySQLに投入したデータを永続化するために、以下のコマンドでボリュームを作成します。
docker volume create (mysql-data)
4. MySQLコンテナの起動
以下のコマンドを実行して、MySQLのコンテナを起動します。このコマンドでは、MySQLのデータを永続化するために先ほど作成したボリュームを使用しています。また、環境変数を設定してMySQLの初期設定を行っています。
docker run -d \
--name (mysql-container) \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=(your_root_password) \
-e MYSQL_DATABASE=(your_database_name) \
-e MYSQL_USER=(your_username) \
-e MYSQL_PASSWORD=(your_password) \
-v (mysql-data):/var/lib/mysql \
mysql:latest
各オプションの簡単な解説
-
-d
: コンテナをバックグラウンドで実行 -
--name
: コンテナの名前を設定 -
-p
: ポートのマッピング(ホスト側のポート:コンテナ側のポート) -
-e
: 環境変数の設定 -
-v
: ボリュームのマッピング (ボリューム名:コンテナ内のディレクトリ) -
mysql:latest
: 使用するDockerイメージ名
以下のコマンドで、ちゃんとコンテナが起動しているか確認してみましょう。
docker ps
NAME に mysql-container があればOKです!
5. MySQLへ接続
コンテナ内のMySQLサーバーに接続するには、まずdocker exec
コマンドを使ってコンテナ内でシェルを実行し、次にそのシェルでMySQLクライアントツールを実行します。
以下のコマンドを実行して、MySQLサーバーが動作しているコンテナに接続します。
docker exec -it (mysql-container) bash
各オプションの簡単な解説
-
-it
: 対話的に操作するためのオプションです。 -
(mysql-container)
: 接続するコンテナの名前です。 -
bash
: コンテナ内で実行するシェルコマンドです。
コンテナ内のシェルが開いたら、mysql
コマンドでMySQLクライアントツールを実行して、MySQLサーバーに接続します。
以下のコマンドを実行すると、パスワードの入力を求められますので、(your_password)
を入力してください。
mysql -u (your_username) -p
各オプションの簡単な解説
-
-u (your_username)
: MySQLサーバーに接続する際のユーザー名を指定します。 -
-p
: パスワードを入力するプロンプトが表示されることを指定します。このオプションを指定すると、コマンドを実行した後にパスワード入力が求められます。
これでコンテナ内のMySQLサーバーに接続することができました。
対話型のクライアントツールを使って、データベースの操作ができます。
試しに、以下のコマンドでMySQL内のデータベースの一覧を表示してみましょう。
SHOW DATABASES;
注意: 今後、SQLコマンドはセミコロン(;)で終わらせて実行してください。
先ほど作成した(your_database_name)
があればOKです!(o^^o)
実際にテーブルを作って、データを入力してみよう!
試しにユーザーを管理する usersテーブル を作成してみましょう!
カラムは id, name, age, gender, countory とします。
-
使用するデータベースを選択
USE (your_database_name);
-
users
テーブルを作成CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, age INT NOT NULL, gender ENUM('male', 'female') NOT NULL, country VARCHAR(255) NOT NULL );
-
users
テーブルにサンプルデータを投入INSERT INTO users (name, age, gender, country) VALUES ('Alice', 30, 'female', 'United States'), ('Bob', 25, 'male', 'Canada'), ('Charlie', 22, 'male', 'United Kingdom');
-
テーブルの中身を確認してみよう!
テーブルの内容を表示するには、SELECT
文を使います。
以下のコマンドは、指定されたテーブルのすべてのカラムとすべての行を表示します。SELECT * FROM users;
users
テーブルのすべてのカラムと行が表示されましたね。
ではexit;
コマンドでMySQLサーバーから抜けて、exit
コマンドでコンテナからも抜けて、docker stop (mysql-container)
コマンドでコンテナを停止しましょう。
またDBをいじる時は、docker start (mysql-container)
でコンテナを起動して、
docker exec -it (mysql-container) bash
でコンテナの中に入り、
mysql -u (your_username) -p
でMySQLサーバーにログインしましょう。
最後に
お疲れ様でした!
以上で、Dockerを使ってMySQLの環境を構築する手順が完了となります。
データベースが絡むと途端に難しくなりますよね〜。
でも避けては通れない分野なので、お互い頑張りましょう!
それではまた!(^_^)ノシ