春ブーツDockerisedアプリケーションで特定のローカルのMongoDBインスタンスに接続するには?

アジャイ:

私は、単純な開発してきた春のブートアプリケーションを行うことのCRUD操作を使用してのMongoDBをデータベースとして。私は内のアプリケーションという展開しているドッカーしながら、私がnull値を取得するGETリクエストにMongoDBに保存されているすべてのアイテムのために。ドッカーに必要なファイルの一部を以下に提供します。

Dockerfile:

  VOLUME /tmp
  ADD build/libs/Spring-Boot-MongoDB-0.0.1-SNAPSHOT.jar SpringMongoApp.jar
  ENTRYPOINT ["java", "-Dspring.data.mongodb.uri=mongodb://mongo:27018/otp","-jar","/SpringMongoApp.jar"]

ドッカー-compose.yml:

version: "3"
services:
  api-database:
    image: mongo:3.2.4
    container_name: "springboot-mongo-app"
    ports:
      - "27018:27017"
    environment:
      MONGO_INITDB_ROOT_DATABASE: otp
    networks:
      - test-network

  api:
    image: springboot-api
    ports:
      - "8080:8080"
    depends_on:
      - api-database
    networks:
      - test-network

networks:
  test-network:
    driver: bridge

application.properties:

spring.data.mongodb.host=api-database

私がチェックしたときのMongoDBドッカーコンテナをコンテナIDを使用して、それが自動的に接続されて取得されたテスト・データベースではなくにOTP私は環境のセクションで言及しているデータベースドッキングウィンドウ-compose.ymlファイル。

Valijon:

問題は、あなたのドッキングウィンドウコンテナが永続的ではないということです、あなたのドッキングウィンドウコンテナを実行するたびに、データベースが消去され、再度、再作成しました。

あなたが追加した場合はVOLUME持続する/data/db、あなたは望ましい結果を得るでしょう。

私はあなたの持っているディレクトリが前提とdata/dbあなたが保存されている同じ場所にdocker-compose.ymlあなたがかもしれセットアップカスタムディレクトリ(つまり/tmp/data/db

この方法を試してください。

ドッカー-compose.yml:

version: "3"
services:
  api-database:
    image: mongo:3.2.4
    container_name: "springboot-mongo-app"
    ports:
      - "27018:27017"
    volumes:
      - "./data/db:/data/db"
    environment:
      MONGO_INITDB_ROOT_DATABASE: otp
    networks:
      - test-network

  api:
    image: springboot-api
    ports:
      - "8080:8080"
    depends_on:
      - api-database
    networks:
      - test-network

networks:
  test-network:
    driver: bridge

注:初めて、それはなります空のデータベース。あなたは、コレクション、挿入レコードなどを作成した場合...それはに保存されます./data/db

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=275864&siteId=1