他のDockerコンテナからDockerデータベースにアクセスする

他のDockerコンテナからDockerデータベースにアクセスする

これは私にとって非常に混乱した質問です。リソースのオーバーヘッドが発生する独自のデータベースを持つ複数のコンテナがあります。

mariadbコンテナをデプロイし、他のコンテナでそれを使用したいのですが、常に問題が発生しているようで、わかりません。

以下はいくつかの注意事項です。

  1. mariadbを展開するときに、他のサービスと同じDockerネットワーク上にあるように設定しました。
  2. mariadbをデプロイするときにバインドボリューム/a/path:/configを使用しましたが、そのパスにconfigというフォルダが見つからず、log/、データベース/、custom.cnfのみが見つかります。 / configディレクトリを直接作成しますか、それともデータベースと同じように作成しますか?
  3. /databases には /maria_db および /mysql が含まれています。データベースはどこに保存されていますか?ノートデータベース環境変数 maria_db を呼び出しました。だからここにデータベースが保存されていますか?
  4. /databases/mysql/ および /databases/maria_db/ ディレクトリには、データベースのように見えるファイル (例: .frm 、 .ibd ) がありますが、 /mysql には /maria_db には見つからないファイル拡張子が多くあります (例: .MAD、 . MAI)、これは混乱しています(次の注を参照)。
  5. 他のコンテナにこのデータベースを使用させる必要がある場合は、データベースを呼び出す環境変数(MYSQL_DATABASE = maria_dbなど)を作成する必要がありますか、または別のDockerにデータベースディレクトリへのアクセスを許可する必要がありますか?もしそうなら、どれ?、/ mariadb、/ mysql、または親フォルダ/ databasesの両方に含まれていますか?
  6. 各ドッカーに異なるデータベースユーザー名とパスワード(MYSQL_USER、MYSQL_PASSWORD)を提供したいと思います。これは良い考えですか? (私が知っている限り、最初のユーザー名とパスワードを除いて変数を渡すのではなく、コンソールを介してデータベースに追加する必要があります。)
  7. データベースディレクトリを使用するすべてのドッカーにマウントする必要がある場合は、どこそれを使用する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: 前述したように、そうしてはいけません。

関連情報