ホームページ  >  記事  >  データベース  >  Docker公式mysqlイメージのカスタム設定方法

Docker公式mysqlイメージのカスタム設定方法

WBOY
WBOY転載
2023-05-27 13:34:061249ブラウズ

コードをコピーします コードは次のとおりです:

$ docker run --name some-mysql -e mysql_root_password=my-secret-pw -d daocloud.io/mysql:tag

some-mysql コンテナの名前を指定し、my-secret-pw で root ユーザーのパスワードを指定し、tag パラメータで必要な mysql のバージョンを指定します。

この方法では、データは永続化されないため、起動パラメータにマウントする必要があります。 ローカル ディレクトリ

したがって、データベースはこのように実行され続けますが、最近プログラムが絵文字表現をサポートする必要があるため、mysql の文字セットを変更する必要があります。

コードをコピーします コードは次のとおりです:

$ docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e mysql_root_password=my- Secret-pw -d daocloud.io/mysql:tag

この時点で、カスタム構成ファイルをマウントできます。公式ドキュメントには、

mysql サービスが開始されると、次のようになります。 /etc/mysql/my.cnf このファイルは、構成ファイルとして、/etc/mysql/conf.d ディレクトリ内の .cnf サフィックスを持つすべてのファイルをインポートします。これらのファイルは、/etc/mysql/my.cnf ファイルの設定を拡張またはオーバーライドします。したがって、独自の構成ファイルを作成し、mysql コンテナ内の /etc/mysql/conf.d ディレクトリにマウントできます。

したがって、データベース構成を変更する最も簡単な方法は、ホスト マシン上に新しい構成ファイルを作成し、それを utf8mb4

[client]

default-character-set=utf8mb4


[mysqld]

character-set-client-handshake = false

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

[mysql]
default-character-set=utf8mb4

に変更し、そのファイルを対応する Docker コンテナーにコピーすることです。フォルダー

docker cp /home/my.cnf(宿主机文件路径) [容器id]:/etc/mysql/mysql.conf.d

最後に、docker stop および start コマンドを使用してコンテナーを再起動し、カスタム構成を読み込みます。

docker の公式 mysql イメージで構成されたコンテナーが問題を開始できません

mysql の docker イメージを使用しています。まずイメージを作成して開始します。

# docker run --name mysql-b \
> -p 33002:3306 -v /zc/mysql/datadir-b:/var/lib/mysql \
> -e mysql_root_password='123456' -d mysql:latest

通常どおりに開始します。問題ありません。通常、mysql を使用するときはパラメータを設定する必要があります。パラメータを設定するには、まずコンテナの bash に入り、次の操作を実行する必要があります。

docker exec -it mysql-b bash

mysql のデフォルトの設定ファイルは /etc/mysql/my.cnf ファイルです。構成をカスタマイズする場合は、/etc/mysql/conf.d ディレクトリに .cnf ファイルを作成することをお勧めします。新しく作成されるファイルには、サフィックスが cnf であれば任意の名前を付けることができます。新しく作成されたファイル内の構成項目は、/etc/mysql/my.cnf 内の構成項目をオーバーライドできます。 mysql の公式 docker イメージには vim エディターが提供されていないため、cat コマンドを使用してファイルを生成し、コンテンツを追加しました:

# cat >test.cnf <<eof
[mysqldump]
user=root
password=&#39;123456&#39;
[mysqld]
max_allowed_packet=8m
lower_case_table_names=1
character_set_server=utf8
max_connections=900
max_connect_errors=600
default-character-set=utf8
eof

終了後、コンテナーを停止し、コンテナーを再起動しました。コンテナを起動できなかったということです。

#解決策

起動できない元のコンテナを削除します。新しいコンテナを再作成します。問題の核心は、元の test.cnf ファイルにエラーがあることです。元の構成ファイルの最後の行を見つけます:

default-character-set=utf8

この行を削除します。構成ファイルを追加するときに、そのような行がないことを確認してください。

問題の原因

mysql の公式 docker イメージでは、latest というラベルの下に、[mysqld] にデフォルト文字セットがありません。 ] 設定セクションのこの設定項目。

すべての構成項目を表示する場合は、次のコマンドを使用し、パイプラインを使用して出力ヘルプを help.txt ファイルに追加できます。

docker run -it --rm mysql:tag --verbose --help > help.txt

ここで、タグはイメージのラベルを表します。最新や 5.6 など。


以上がDocker公式mysqlイメージのカスタム設定方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。