問題
間違ったIP/ホスト名でDBにアクセスしようとしています。ご覧のとおり、localhost
にアクセスします 春のコンテナはそのコンテナに解決され、27017
はありません そこで聞いているポート。 Dockerホストでjarを実行すると、27017
になります。 利用可能なポート、それが機能する理由です。
ソリューション
--hostname
を使用できます docker run
のフラグ コマンドを使用してDBコンテナのホスト名を設定し、ホスト名を使用してSpringコンテナから接続できるようにします。
ただし、より良い解決策は、docker-composeファイルを使用し、docker-compose up
を使用してコンテナーを起動することです。 。
まず第一に
を使用しますMongoClient mongo = new MongoClient("db", 27017));
Springコードで、コードのイメージを作成します。
その後、以下の手順に従ってコンテナを起動します。
A)作成ファイルを作成する
docker-compose.yml
という名前のファイルを作成します 次の内容で:
version: "2.1"
services:
app:
# replace imageName with your image name (block in your case)
image: imageName:tag
ports:
- 9876:4000 # Replace the port of your application here if used
depends_on:
- db
db:
image: mongo
volumes:
- ./database:/data
ports:
- "27017:27017"
B)作成ファイルを実行します
次のコマンドを実行して、作成ファイルを実行します。docker-compose up -d