Dockerfile 内のコマンド:(応用)カスタムした MariaDB イメージの作成

MariaDB の設定ファイル “my.cnf” を準備
  1. vi エディタ等で “my.cnf” を準備
    ※ここでは、内容を下記としています
# db/my.cnf
[mysqld]
character-set-server=utf8
datadir = /var/lib/mysql
テーブルを作成するための “create-table.sql” を準備
  1. vi エディタ等で “create-table.sql” を準備
    ※ここでは、内容を下記としています
CREATE TABLE products ( id int, name varchar(255), price int
);
Dockerfile を準備
  1. 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 からイメージを生成
  1. ターミナルで下記コマンドを実行
    docker build -t img-techmemo-mariadb ./
    ※ここでは、イメージ名を “img-techmemo-mariadb” としています
“docker images” で生成したイメージの確認
  1. ターミナルで下記コマンドを実行
    docker images
  • “img-techmemo-mariadb” が生成されていることが確認できます
コンテナ起動
  1. ターミナルで下記コマンドを実行
    docker run -d –name techmemo-mariadb img-techmemo-mariadb
コンテナ起動を確認
  1. ターミナルで下記コマンドを実行
    docker ps
  • img-techmemo-mariadb イメージからコンテナが起動できていることを確認できます
コンテナ内に入る
  1. ターミナルで下記コマンドを実行
    docker exec -it techmemo-mariadb /bin/bash
MariaDB にログイン
  1. ターミナルで下記コマンドを実行
    mysql -u root -p
  2. “Enter password:” で「root」と入力(入力内容は表示されません)
    → Dockerfile に記載した「ENV MYSQL_ROOT_PASSWORD=root」がパスワードになっています
データベースの確認
  1. ターミナルで下記コマンドを実行
    show databases;
  • “techmemo_db” が作成されていることが確認できます
    → Dockerfile に記載した「ENV MYSQL_DATABASE=techmemo_db」がデータベース名になります
テーブルの確認
  1. ターミナルで下記コマンドを実行
    use techmemo_db
  2. ターミナルで下記コマンドを実行
    show tables;
  • “products” テーブルが作成されていることを確認できます
    → 準備していた “create-table.sql” が実行されたことが分かります