Интеграция SpringBoot и MongoDb в Docker

У меня есть приложение SpringBoot, работающее в докере, и я использую PostgreSQL в качестве базы данных для этого проекта, и база данных также работает в докере.

Теперь я хочу использовать MongoDb вместе с PostgreSQL в качестве базы данных для моего приложения SpringBoot.

Я добавил информацию MongoDb в файл docker-compose.yml, создал новый файл Dockerfile и запустил приложение. После этого MongoDb был успешно установлен и запущен в докере.

Я создал API для вставки документа в коллекцию. Когда я нажимаю API, я получаю сообщение об ошибке. Я думаю, что не могу подключиться к MongoDb, который работает в докере.

ошибка: - com.mongodb.MongoSocketOpenException: сокет открытия исключения

Я думаю, что мне нужно выполнить настройку в MongoDb, прежде чем выполнять какие-либо операции CRUD.

Может ли кто-нибудь поделиться подробной конфигурацией MongoDb с некоторыми примерами.

Или предоставьте некоторую информацию, которая может помочь мне выполнить мою задачу.

Спасибо.

Docker-compose.yml

mongodb:
build:
context: mongodb
args:
DOCKER_ARTIFACTORY: ${DOCKER_ARTIFACTORY}
container_name: “mongodb”
image: mongo:6.0.4
restart: always
environment:
- MONGODB_USER=${SPRING_DATASOURCE_USERNAME:-username}
- MONGODB_PASSWORD=${SPRING_DATASOURCE_PASSWORD:-password}
ports:
- “27017:27017”
volumes:
- “/mongodata:/data/mongodb”
networks:
- somenetwork

Докерфайл

ARG DOCKER_ARTIFACTORY
FROM ${DOCKER_ARTIFACTORY}mongo:6.0.4
COPY init/mongodbsetup.sh /docker-entrypoint-initdb.d/
RUN chmod +x /docker-entrypoint-initdb.d/mongodbsetup.sh
CMD [“mongod”]
Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
0
0
51
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

version: '3'
services:
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: password
  mongodb:
    image: mongo
    ports:
      - "27017:27017"
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: password

Вы можете найти приведенную выше конфигурацию файла докера, который включает в себя конфигурации как MongoDB, так и PostgreSQL.

Я изменяю файл docker-compose.yml, как показано ниже. mongodb: ... args: DOCKER_ARTIFACTORY: ${DOCKER_ARTIFACTORY} container_name: "mongodb" image: mongo:6.0.4 restart: always environment: - MONGO_INITDB_DATABASE=code - MONGO_INITDB_ROOT_USERNAME=postgres - MONGO_INITDB_ROOT_PASSWORD=password ... Приложение работает успешно, без ошибок. Когда я нажимаю API вставки документа, я получаю сообщение об ошибке ниже. org.springframework.data.mongodb.UncategorizedMongoDbExcepti‌​on: Exception authenticating MongoCredential... есть решения?

shaik aslam 03.02.2023 08:41
Ответ принят как подходящий

Я решаю проблему и успешно могу подключиться и выполнять операции CRUD.

Ниже приведены изменения, которые я сделал.

1. docker-compose.yml

  mongodb:
    build:
      context: mongodb
      args:
        DOCKER_ARTIFACTORY: ${DOCKER_ARTIFACTORY}
    container_name: mongodb
    hostname: mongodb
    restart: always
    environment:
      - MONGO_INITDB_DATABASE=databaseName
      - MONGO_INITDB_ROOT_USERNAME=username
      - MONGO_INITDB_ROOT_PASSWORD=password
    ports:
      - 27017:27017
    volumes:
      - /mongodata:/data/mongodb
    networks:
      - somenetwork

созданный ниже файл (имя файла: mongodbsetup.sh) в папке projectFolder/builder/mongodb/init

#!/bin/bash

mongosh <<EOF
use code
EOF

созданный ниже файл (имя файла: Dockerfile) в папке projectFolder/builder/mongodb

ARG DOCKER_ARTIFACTORY
FROM ${DOCKER_ARTIFACTORY}mongo:6.0.4

COPY init/mongodbsetup.sh /docker-entrypoint-initdb.d/

RUN chmod +x /docker-entrypoint-initdb.d/mongodbsetup.sh

CMD ["mongod"]

В файле application.properties добавлены следующие свойства

#MongoDB configurations
spring.data.mongodb.database=databasename
spring.data.mongodb.uri=mongodb://username:password@databaseurlOrIpAddress:27017

Вот и все. Работает.

Другие вопросы по теме