MariaDB の設定ファイル “my.cnf” を準備
- vi エディタ等で “my.cnf” を準備
※ここでは、内容を下記としています
# db/my.cnf
[mysqld]
character-set-server=utf8
datadir = /var/lib/mysql
テーブルを作成するための “create-table.sql” を準備
- vi エディタ等で “create-table.sql” を準備
※ここでは、内容を下記としています
CREATE TABLE products ( id int, name varchar(255), price int
);
Dockerfile を準備
- vi エディタ等で “create-table.sql” を準備
※ここでは、内容を下記としています
FROM mariadb:10.4
RUN apt-get update -y
COPY my.cnf /etc/mysql/conf.d
COPY create-table.sql /docker-entrypoint-initdb.d
ENV MYSQL_USER=root
ENV MYSQL_DATABASE=techmemo_db
ENV MYSQL_ROOT_PASSWORD=root
- FROM に MariaDB 公式のイメージを指定
公式のイメージには必要なコマンドも含まれているため CMD が不要となる - “create-table.sql” を “/docker-entrypoint-initdb.d” ディレクトリ配下に置くとコンテナ起動時に自動的に実行されて、テーブルが作成される
- ENV で “MYSQL_DATABASE” を定義することでコンテナ起動時に自動的にデータベースが作成される
Dockerfile からイメージを生成
- ターミナルで下記コマンドを実行
docker build -t img-techmemo-mariadb ./
※ここでは、イメージ名を “img-techmemo-mariadb” としています
“docker images” で生成したイメージの確認
- ターミナルで下記コマンドを実行
docker images
- “img-techmemo-mariadb” が生成されていることが確認できます
コンテナ起動
- ターミナルで下記コマンドを実行
docker run -d –name techmemo-mariadb img-techmemo-mariadb
コンテナ起動を確認
- ターミナルで下記コマンドを実行
docker ps
- img-techmemo-mariadb イメージからコンテナが起動できていることを確認できます
コンテナ内に入る
- ターミナルで下記コマンドを実行
docker exec -it techmemo-mariadb /bin/bash
MariaDB にログイン
- ターミナルで下記コマンドを実行
mysql -u root -p - “Enter password:” で「root」と入力(入力内容は表示されません)
→ Dockerfile に記載した「ENV MYSQL_ROOT_PASSWORD=root」がパスワードになっています
データベースの確認
- ターミナルで下記コマンドを実行
show databases;
- “techmemo_db” が作成されていることが確認できます
→ Dockerfile に記載した「ENV MYSQL_DATABASE=techmemo_db」がデータベース名になります
テーブルの確認
- ターミナルで下記コマンドを実行
use techmemo_db - ターミナルで下記コマンドを実行
show tables;
- “products” テーブルが作成されていることを確認できます
→ 準備していた “create-table.sql” が実行されたことが分かります