で世界書き込み可能なMySQLエラーを修正:私は、このようなコンテナが定義されているデシベルのため、ドッカ - コンを使用していドッカー
db:
build: ../builds/mysql-5.7
environment:
- MYSQL_ROOT_PASSWORD=pass
- MYSQL_DATABASE=
- MYSQL_USER=
- MYSQL_PASSWORD=
expose:
- 3306
volumes:
- /c/Users/marcin/dock-test/composers/l1.app/mysql/data/:/var/lib/mysql/
- /c/Users/marcin/dock-test/composers/l1.app/mysql/conf.d/:/etc/mysql/conf.d/
- /c/Users/marcin/dock-test/composers/l1.app/mysql/log/:/var/log/mysql/
このイメージの私のDockerfileがある:で
# Base image
FROM mysql:5.7
# Set valid file permissions - otherwise MySql won't read those files
#COPY mysql-perm-fix.sh /etc/init.d/mysql-perm-fix.sh
#RUN chmod +x /etc/init.d/mysql-perm-fix.sh
#RUN update-rc.d mysql-perm-fix.sh defaults 100
#RUN mkdir /etc/mysql/conf.d/source
#RUN cp /etc/mysql/conf.d/source/my.cnf /etc/mysql/conf.d/my.cnf
#RUN chmod -R 644 /etc/mysql/conf.d
すべてが基本MySqlイメージを除いてコメントされています。私は私のコンテナを起動したとき
問題は、私のMySQL CNFファイルがあるため、この警告のMySQLが使用されることはありませんされています
のmysqld:[警告]世界の書き込み可能な設定ファイル「の/ etc/mysql/conf.d/my.cnf 'は無視されます。
私はホストシステムとしてWindowsを使用しています。問題は、Dockerが完全な権限を持つディレクトリをマウントし、変更できないことです。
質問 - どのように解決できますか?あなたが私のDockerfileで見てきたように、私はいくつかの解決法を試しましたが、それらのどれも私のために働いていません(しかし、おそらく私は何か間違っています)。
現時点で最も合理的な解決策は、/etc/mysql/conf.d/
に直接ではなく、他のディレクトリにMySqlのconfファイルをマウントし、MySqlを起動して777のアクセス権ではなくそれらのファイルを/etc/mysql/conf.d/
ディレクトリにコピーすることです。私はそれを試してみましたが、Dockerfileではそれらのファイルはまだ存在しないのでコピーできません。
解決方法はありますか?または、おそらく、いくつかのMySQLの設定は、confファイルのアクセス許可を気にしないように変更することができますか?
私は複数のサイトでこれらのイメージを使いたいので、Dockerfile内のCOPYを(ボリュームを使用する代わりに)Mysql設定ファイルをコピーするのに単純に使うことはできません。
問題は、コンテナ間でそれらのボリュームを共有したくないということです。私はちょうど私のホストシステム(Windows)のMySqlコンテナに持っているコンテナのcnfファイルに含める必要があります。 –
私はコンテナ間で共有しないという答えに別のオプションを追加しましたが、それはホストから引き出されません。私は他のことを考えることができるかどうかを見ていきます。 –
ありがとうございました。それは私がこれを解決することができたようだ(私の答えを参照してください) –