DockerでMysqlの初期データ投入と永続化(ハンズオン)


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

本日はAmazon linux2インスタンスにDockerでMysqlコンテナ起動手順を紹介します。

事前条件

  1. EC2インスタンス作成済
  2. 上記のインスタンスにDockerをインストール済
    前回ブログ参照:https://cloud5.jp/amazon-linux2-docker-install/

準備作業

  1. EC2ホストに下記のフォルダを作成する。
    #mysql管理用フォルダ
    mkdir mysql
    #データ永続化用フォルダ
    mkdir mysql/datadir
    #初期データ投入用フォルダ
    mkdir mysql/initdb
  2. 下記の内容でデータ初期化用SQLファイルを作成する。".mysql/initdb/init.sql"
    --ダータベース作成
    create database testdb;
    --テーブル作成
    create table testdb.user (id int,name varchar(256));
    --テストデータ作成
    insert into testdb.user values(1,'ユーザー1');
    insert into testdb.user values(2,'ユーザー2');
    insert into testdb.user values(3,'ユーザー3');

    DockerでMysqlコンテナ起動

  3. イメージダウンロード
    #イメージファイルをプルする
    sudo docker pull mysql:5.7.33
    #イメージを確認する
    sudo docker images

    2. コンテナ起動

    #MySQLコンテナを起動する
    #パラメータ説明:
    #右記のパラメータでデータ永続化用フォルダをマウントする  :-v /home/ec2-user/mysql/datadir:/var/lib/mysql
    #右記のパラメータで初期データ投入用フォルダをマウントする :-v /home/ec2-user/mysql/initdb:/docker-entrypoint-initdb.d
    sudo docker run --restart=always -it --name mydb -v /home/ec2-user/mysql/datadir:/var/lib/mysql -v /home/ec2-user/mysql/initdb:/docker-entrypoint-initdb.d -e MYSQL_ROOT_PASSWORD=test1234 -d mysql:5.7.33 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci 
    #コンテナを確認する
    sudo docker ps -a

    確認

  4. ホストでデータ永続化用フォルダの確認
    ls -l mysql/datadir

  5. 初期データ投入確認
    #コンテナのBashセッションを開始します。
    sudo docker exec -it mydb bash -p
    #mysqlに接続する
    > mysql -u root -p -h 127.0.0.1
    > Enter password:
    mysql >
    mysql > show databases;
    mysql > use testdb;
    mysql > select * from user;
    mysql > insert into testdb.user values(4,'永続化確認用');
    mysql > exit
    >exit

  6. OS再起動、コンテナの自動起動とデータ永続化確認
    #Linux OSを再起動する
    sudo reboot
    sudo docker ps -a
    sudo docker exec -it mydb bash -p
    mysql -u root -p -h 127.0.0.1
    > Enter password:
    > mysql > use testdb;
    mysql > select * from user;

Last modified: 2024-02-05

Author