Docker を活用した MySQL データベースのセットアップ:data.sql のインポートから始める
MySQL Docker コンテナーに data.sql をインポートする方法
前提条件
- Docker がインストールされている
data.sql
ファイルが用意されている- MySQL コンテナーが起動している
手順
- コンテナに data.sql ファイルをコピーする
以下のコマンドを使用して、data.sql
ファイルをコンテナ内にコピーします。
docker cp data.sql <container_name>:/var/lib/mysql/
<container_name>
を起動している MySQL コンテナーの名前、data.sql
をコピーするホストマシンのファイルパスに置き換えます。
以下のコマンドを使用して、MySQL コンテナーに接続します。
docker exec -it <container_name> bash
- MySQL にログインする
mysql -u root -p
パスワードを求められますので、設定したパスワードを入力してください。
- データベースを作成する
以下のコマンドを使用して、インポートするデータ用のデータベースを作成します。
CREATE DATABASE my_database;
my_database
をインポートするデータ用のデータベース名に置き換えます。
USE my_database;
SOURCE /var/lib/mysql/data.sql;
EXIT;
- コンテナを終了する
docker stop <container_name>
補足
- MySQL コンテナーを起動する際に、
-e MYSQL_ROOT_PASSWORD=my-password
オプションを指定して、root ユーザーのパスワードを設定することができます。 - データベースの名前やファイルパスを変更する場合は、上記のコマンドで accordingly 変更してください。
# 1. コンテナに data.sql ファイルをコピーする
docker cp data.sql <container_name>:/var/lib/mysql/
# 2. MySQL コンテナに接続する
docker exec -it <container_name> bash
# 3. MySQL にログインする
mysql -u root -p
# 4. データベースを作成する
CREATE DATABASE my_database;
# 5. data.sql ファイルをインポートする
USE my_database;
SOURCE /var/lib/mysql/data.sql;
# 6. MySQL を終了する
EXIT;
# 7. コンテナを終了する
docker stop <container_name>
このサンプルコードは、MySQL Docker コンテナーに data.sql
ファイルをインポートするための手順を示しています。
Docker Compose を使用すると、MySQL コンテナーと data.sql
ファイルを定義する YAML ファイルを作成することで、インポートプロセスを自動化できます。
docker-compose.yml ファイルを作成する
version: "3.8"
services:
mysql:
image: mysql:5.7
volumes:
- ./data:/var/lib/mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: my-password
MYSQL_DATABASE: my_database
import:
build: .
volumes:
- ./data:/var/lib/mysql
depends_on:
- mysql
entrypoint: ["bash", "-c", "mysql -u root -pmy-password my_database < /var/lib/mysql/data.sql"]
このファイルでは、mysql
という名前の MySQL コンテナーと、import
という名前のコンテナを定義しています。
mysql
コンテナーは、MySQL 5.7 イメージに基づいており、/var/lib/mysql
ディレクトリをホストマシンの./data
ディレクトリにマウントします。import
コンテナーは、現在のディレクトリに基づいてビルドされ、/var/lib/mysql
ディレクトリをホストマシンの./data
ディレクトリにマウントします。このコンテナは、mysql
コンテナーが起動してから起動するように設定されています。import
コンテナーのエントリーポイントは、bash
スクリプトで、これはmysql
コマンドを使用してdata.sql
ファイルをmy_database
データベースにインポートします。
Docker Compose を起動する
以下のコマンドを使用して、docker-compose.yml
ファイルで定義したコンテナを起動します。
docker-compose up -d
docker-compose down
LOAD DATA INFILE
コマンドを使用して、MySQL コンテナーに直接データをインポートすることもできます。
docker exec -it <container_name> bash
mysql -u root -p
LOAD DATA INFILE コマンドを実行する
LOAD DATA INFILE '/var/lib/mysql/data.sql'
INTO TABLE my_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
- 必要に応じて、区切り文字と行末文字を変更してください。
EXIT;
docker stop <container_name>
上記以外にも、MySQL Docker コンテナーに data.sql
ファイルをインポートするには、いくつかの方法があります。最適な方法は、ニーズと環境によって異なります。
mysql docker