Я пытаюсь создать docker-compose.yml с MongoDB и загрузкой Spring.Проблема в том, что я не хочу жестко закодировать какие-либо соединения с базой данных в application.properties
.
Spring. Из этой статьи я увидел, что вы можете запустить контейнер mongodb с предопределенным именем хоста.Как я понимаю, все службы, определенные в файле compose yml, находятся в одной сети, но у них разные ips, верно? Итак, главный вопрос - как определить имя хоста mongodb в docker-compose.yml и использовать это имя в файле весенней загрузки application.properties.
Я постараюсь дать как можно больше информациикак я могу, но если что-то неясно, дайте мне знать.
Вот некоторая информация о приложении Spring Boot.
Зависимости, которые я использую в проекте Springявляются:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Приложение имеет интерфейсы, расширяющие MongoRepository:
import org.springframework.data.mongodb.repository.MongoRepository;
public interface ServiceLoggerRepository extends MongoRepository<ExampleEntity, String> {
}
и использует аннотированные сущности @Document
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "example")
public class ExampleEntity {
@Id
private String _id;
private String name;
}
Соединение с базой данных определенов файл application.properties:
#here is the problem - this the vm ip
spring.data.mongodb.uri=mongodb://192.168.0.51
spring.data.mongodb.database=mongo-test
Информация о Docker-файле Spring Boot:
FROM openjdk:8-jre
COPY ./mongo-test.jar ./usr/mongo-test.jar
EXPOSE 8080
RUN sh -c 'touch /usr/mongo-test.jar'
ENTRYPOINT ["java","-jar","/usr/mongo-test.jar"]
Информация о docker-compose: Имеет 2 сервиса - MongoDB и Spring Boot.
version: "3"
services:
mongodb:
restart: always
image: mongo
container_name: "mongodb-test"
ports:
- 27017:27017
command: --smallfiles
mongo-logger:
restart: always
build: ./mongo-test
container_name: "mongo-test"
ports:
- 8080:8080
depends_on:
- mongodb
links:
- mongodb
Когда контейнер создан и запущен, он работает.Но проблема в том, что я понятия не имею, где и как определить spring.data.mongodb.uri, чтобы использовать что-то статическое, например, spring.data.mongodb.uri=mongodb://mongo-hostname
.
Возможно ли это, и есть ли какие-либо ценные решения или хорошие практики дляделать это?