私は2つのドッカーコンテナを持っています。 1つは、標準のMariaDBイメージに基づいています。コンテナの名前は「mariadb」で、内部には「fi」というデータベースが1つあります。 fiデータベースには、いくつかのテーブルがあり、それぞれに2行のデータがあります。 DataGripやその他のデータベース閲覧ソフトウェアを使用して、ポート3306を使用してローカルホスト上で呼び出すこのデータベースに正常にアクセスして照会することができます。別のドッカーから1つのドッカーのMariaDBにアクセス
2番目のDockerコンテナは、MariaDBのデータにアクセスする必要があるSpring起動アプリケーションを実行します。ドッカーでMariaDBを実行し、ホストマシン上のSpringBootアプリケーションを実行すると、接続文字列「jdbc:mariadb:// localhost:3306 /?user = myUsername & password」を使用して、ドッカー内のMariaDBに正常にアクセスできます。 = myPassword "私の問題は、両方を別々のDockersで実行しようとすると、Springブートアプリケーションがデータベースにアクセスできなくなることです。私は、2人のドッカーを「リンク」すると言っている人がたくさんいますが、これは問題を解決していないようです。私がSpring Bootドッカーを実行すると、 "docker run -i -p 8080:8080 --link mariadb:db javaImage/bin/bash"というコマンドを実行します。この問題に関連しない理由で8080ポートを公開しています。私が理解しているところで、彼らは今や、 "db"というキーワードでアクセス可能な私のSpring Bootドッカーの中の環境変数になります。これは、MariaDBドッカーの実際のIPである環境変数に置き換えられます。
現在のところ、私のJavaコードでは、接続文字列「jdbc:mariadb:// db:3306/fi?user = myUsername & password = myPassword」を使用しています。この接続は、「接続できませんでした:不明なデータベース 'fi'」というエラーが返されます。これは、この接続が本当にMariaDBドッカーに接続していた場合に、fiデータベースが検出されるためです。
何か助けていただければ幸いです。 ありがとう!
編集:コードスニペット
Connection connection = DriverManager.getConnection("jdbc:mariadb://mariadb:3306/fi?user=myUsername&password=myPassword");
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM ...;");
上図のように接続文字列への変更は、以下の推奨通りに作られます。次に、コマンド "run -i -p 8080:8080 --link mariadb javaImage/bin/bash"を使用してコンテナを実行します。接続しようとしたときにこのエラーが発生すると、同じ結果が表示されます。「接続できませんでした:不明なデータベース「fi」」
私はお勧めの平均時間は、特にコードスニペットを引用し、ガイドラインに従ってご質問をフォーマットします。 – techtabu