これは私にとって非常に混乱した質問です。リソースのオーバーヘッドが発生する独自のデータベースを持つ複数のコンテナがあります。
mariadbコンテナをデプロイし、他のコンテナでそれを使用したいのですが、常に問題が発生しているようで、わかりません。
以下はいくつかの注意事項です。
- mariadbを展開するときに、他のサービスと同じDockerネットワーク上にあるように設定しました。
- mariadbをデプロイするときにバインドボリューム/a/path:/configを使用しましたが、そのパスにconfigというフォルダが見つからず、log/、データベース/、custom.cnfのみが見つかります。 / configディレクトリを直接作成しますか、それともデータベースと同じように作成しますか?
- /databases には /maria_db および /mysql が含まれています。データベースはどこに保存されていますか?ノートデータベース環境変数 maria_db を呼び出しました。だからここにデータベースが保存されていますか?
- /databases/mysql/ および /databases/maria_db/ ディレクトリには、データベースのように見えるファイル (例: .frm 、 .ibd ) がありますが、 /mysql には /maria_db には見つからないファイル拡張子が多くあります (例: .MAD、 . MAI)、これは混乱しています(次の注を参照)。
- 他のコンテナにこのデータベースを使用させる必要がある場合は、データベースを呼び出す環境変数(MYSQL_DATABASE = maria_dbなど)を作成する必要がありますか、または別のDockerにデータベースディレクトリへのアクセスを許可する必要がありますか?もしそうなら、どれ?、/ mariadb、/ mysql、または親フォルダ/ databasesの両方に含まれていますか?
- 各ドッカーに異なるデータベースユーザー名とパスワード(MYSQL_USER、MYSQL_PASSWORD)を提供したいと思います。これは良い考えですか? (私が知っている限り、最初のユーザー名とパスワードを除いて変数を渡すのではなく、コンソールを介してデータベースに追加する必要があります。)
- データベースディレクトリを使用するすべてのドッカーにマウントする必要がある場合は、どこそれを使用するdockerにインストールする必要がありますか?
質問が多いのは分かりますが、混乱した話題で、数時間を読んでも自分で調べることはできません(昨日一人で12時間を過ごしました)。
よろしくお願いします。
答え1
データベースへのアクセスについて少し誤解があるようです。データベース自体以外のアプリケーションは元のデータベースファイルを変更しないでください。他のすべてのアプリケーションも変更する必要があります。相互作用データベースを使用して情報にアクセスするか、情報を変更します。
2:ドッカーイメージであるほとんどのデータベースは、環境変数を介して構成変数を渡す規則に従います。ここを参照してください:https://mariadb.com/kb/en/installing-and-using-mariadb-via-docker/
試してみるとバインドマウント /a/path:/config
/a/path
/config
、ローカルシステムのマウントをDockerコンテナにバインドしようとしています。私が知る限り、このディレクトリはMariaDBドッカーには存在しません。
3:データベースはどこにありますか?データファイル予約する? ~によるとマリアデータベース、デフォルトの場所はです/var/lib/mysql
。
5:#2で述べたように環境変数に渡すことができます。 「良いアイデア」が何を意味するのか理解していませんが、確かに可能で標準です。
7: 前述したように、そうしてはいけません。