DockerでMySQLコンテナの作成(日本語対応)

DockerでMySQLデータベースのコンテナ作成

Dockerを使ってMySQLのコンテナを作成する方法を紹介します。

本記事で使用するサンプルファイルはこちらよりダウンロード出来ます。
SAMPLE

サンプルの内容 (mysql_container_img.zip)

環境: Docker version 19.03.13, Mac OS 10.15.7

公式Dockerイメージを使用する

docker hubに用意されているMySQL公式イメージを使用します。

一覧(Tags)よりMySQLバージョン5.7を選択しました。
mysql:5.7

コマンドを実行してイメージを取得
docker pull mysql:5.7

MySQLコンテナの作成

日本語に対応させるため、取得したイメージからそのままコンテナを作成するのではなく、
Dockerfileから新たにイメージをビルドしていきます。

(以降はダウンロードサンプルにて実行)

Dockerfileの内容

FROM句にビルド元として先ほど確認したMySQL公式イメージを指定します。

日本語化の設定

Dockerfileと同階層settingsディレクトリ内に配置したMySQLの設定ファイル、my.cnf
こちらはコンテナ起動時に/etc/mysql/conf.d/my.cnfへ反映されるようにDockerfile内のADD句で指定しています。

イメージのビルド

Dockerfileと設定ファイルの準備が出来たらDockerfileと同じパスで下記コマンドを実行し、イメージをビルドします。

docker build -t mysql-ja .

ビルドに成功したらイメージ一覧から、「mysql-ja」の存在が確認出来ます。

イメージ一覧確認コマンド
docker images

コンテナ作成 & 起動

コマンドを実行し、ビルドしたイメージからコンテナを作成します。
コンテナ名、ここではmysqlcontとしています。

-e オプションでMySQLのルートパスワード「MYSQL_ROOT_PASSWORD」を設定します。

※こちらのオプションでパスワードをきちんと設定しないとコンテナが起動しないようです…

-v オプションでホスト側にはdata.sqlを格納したsqlsディレクトリ、コンテナ側には/docker-entrypoint-initdb.dを指定します。

ホスト側は絶対パスまたは※上記のように$(pwd)/sqlsと指定します。
※Dockerfileのパスでコンテナを起動する場合

MySQL公式イメージでは/docker-entrypoint-initdb.dに配置されたファイルをコンテナ起動時に実行する機能が用意されています。

これによりコンテナ起動時にテスト用データベースとテストデータの作成を行うことが出来ます。

(下記コマンドでコンテナの起動確認)
docker ps

コンテナログイン

コンテナを起動した場所にテストデータ用のsqlファイル(data.sql)を配置します。
(コンテナの作成前から配置していてもOK)

コンテナの起動に成功したら下記コマンドでログインします。
docker exec -it mysqlcont bash

MySQLコマンドの実行と、ホストと共有したファイルが存在していることを確認します。

MySQLログイン & テストデータ確認

下記コマンドを実行してテスト用DBの作成とデータの投入を行います。
(コンテナ作成時に決めたパスワードを入力)
mysql -u root -p < /home/data.sql

コンテナにログインした状態でMySQLデータベースにログイン
(コンテナ起動時に決めたパスワードを入力)
mysql -u root -p -D prefecture

投入したテストデータを確認
SELECT * FROM prefectures;

Follow me!

DockerでMySQLコンテナの作成(日本語対応)” に対して1件のコメントがあります。

コメントは受け付けていません。