Dockerfile の使用記録: dockerfile を使用して本番環境で mysql を構築する場合の詳細なチュートリアルと事例
1.1 Dockerfile は、指示とパラメータを含む Docker イメージの構築に使用されるテキスト ファイルです。MySQL Dockerfile は、主に MySQL サービスのイメージを構築するために使用されます。以下は、基本的な MySQL Dockerfile の例です。
# 使用官方MySQL镜像
FROM mysql:latest
# 设置root用户的密码
ENV MYSQL_ROOT_PASSWORD=123456
# 设置字符集
ENV LANG=C.UTF-8
# 将自定义配置文件复制到镜像中
COPY my.cnf /etc/mysql/my.cnf
# 将初始化SQL脚本复制到镜像中
COPY init.sql /docker-entrypoint-initdb.d/
# 持久化数据卷
VOLUME /var/lib/mysql
Dockerfile は主に次の部分で構成されます。
FROM mysql:latest: イメージが公式の MySQL イメージに基づいて構築されていることを示します。最新バージョンの使用を示すには、latest タグを使用します。
ENV MYSQL_ROOT_PASSWORD=123456: MySQL root ユーザーのパスワードを環境変数である 123456 に設定します。
ENV LANG=C.UTF-8: 正しい文字処理を保証するために、文字セットを UTF-8 に設定します。
COPY my.cnf /etc/mysql/my.cnf: カスタマイズされた MySQL 構成ファイル my.cnf をイメージ内の /etc/mysql/my.cnf パスにコピーします。
COPY init.sql /docker-entrypoint-initdb.d/: 初期化 SQL スクリプト init.sql をイメージ内の /docker-entrypoint-initdb.d/ パスにコピーします。スクリプトはコンテナーの起動時に自動的に実行されます。データベース。
VOLUME /var/lib/mysql: MySQL データ ディレクトリをホストの /var/lib/mysql ディレクトリにマウントして、ホストの永続データ ボリュームにデータを保存します。
1.2 構成ファイルと SQL スクリプトの作成
my.cnf 構成ファイルをローカルに作成して、MySQL サービスのパラメーターを構成します。たとえば、これは単純な my.cnf ファイルです。
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
max_connections=100
1.3 init.sql ファイルをローカルに作成してデータベースを初期化します。たとえば、次は単純な init.sql ファイルです。
通常、Docker の起動時に必要なデータベースやテーブルの作成、データの挿入などを行うには、init.sql ファイルを自分で記述する必要があります。たとえば、簡単な init.sql の例を次に示します。
CREATE DATABASE mydb;
USE mydb;
CREATE TABLE users (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
email VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO users (name, email) VALUES ('John Doe', '[email protected]');
INSERT INTO users (name, email) VALUES ('Jane Doe', '[email protected]');
このスクリプトは、mydb という名前のデータベースを作成し、その中に users という名前のテーブルを作成し、2 つのレコードを挿入します。
init.sql ファイルは、Docker イメージの起動時にデータベースを自動的に初期化するために、実際のニーズに応じて作成できます。Dockerfile では、COPY init.sql /docker-entrypoint-initdb.d/ コマンドを使用してスクリプトをイメージ内の /docker-entrypoint-initdb.d/ ディレクトリにコピーし、コンテナが起動します。
1.4 Dockerイメージのビルド
コマンド ラインで Dockerfile が存在するディレクトリを入力し、次のコマンドを実行して Docker イメージを構築します。
docker build -t my-mysql .
このコマンドは、現在のディレクトリで Dockerfile ファイルを検索し、my-mysql という名前の Docker イメージを構築します。
1.5 Dockerコンテナの実行
コマンドラインで次のコマンドを実行して、Docker コンテナーを実行します。
docker run -d -p 3306:3306 --name my-mysql -v /path/to/data:/var/lib/mysql my-mysql
このコマンドは、my-mysql という名前の Docker コンテナを起動し、コンテナ内の MySQL サービスの 3306 ポートをホストの 3306 ポートにマップします。-v /path/to/data:/var/lib/mysql は、データの永続性を実現するために MySQL データ ディレクトリをホスト上の /path/to/data ディレクトリにマウントすることを意味します。