Springboot Micro Service和Mongo容器

时间:2019-06-13 16:06:35

标签: docker microservices

我有一个Spring Boot Micro服务,可以调用Mongo DB。

要在我的本地计算机上进行设置。我在本地docker:localhost:27017处设置了Mongo DB容器。

我试图在端口8082上启动Spring boot Micro服务应用程序,并且成功。

我现在想在Docker this中运行它们。

我无法在docker中运行该应用

步骤:

  1. 用于Mongo的Docker容器

docker run -d -p 27017:27017 --name mongo -d mongo:latest

  1. 为我的Spring Boot应用程序构建映像

docker build -f Dockerfile -t myApp .

Docker文件:

FROM dtr-<My Corp Base Image>
ADD build/libs/app.jar app.jar
ENTRYPOINT ["java","-jar","app.jar"]

3。将应用程序放在容器中,并链接到Mongo DB

docker run -p 8082:8082 -e "SPRING_PROFILES_ACTIVE=local" --name myApp-containerName --link=mongo  myApp-ImageName

我的错误:

  

上下文初始化期间遇到异常-取消   刷新尝试:   org.springframework.beans.factory.UnsatisfiedDependencyException:   创建URL中定义的名称为“ zzzzz”的bean时出错   [jar:file:/app.jar!/ BOOT-INF / classes!/com/uscm/ratabase/service/ZZZZ.class]:   通过构造函数参数0表示的不满足的依赖关系;   嵌套异常为   org.springframework.beans.factory.BeanCreationException:错误   创建名称为“ ZZZZZZ”的bean:初始化方法的调用失败;   嵌套异常为   org.springframework.dao.DataAccessResourceFailureException:超时   等待服务器匹配30000毫秒后   WritableServerSelector。群集状态的客户端视图为{type = UNKNOWN,   服务器= [{地址=本地主机:27017,类型=未知,状态=正在连接,   exception = {com.mongodb.MongoSocketOpenException:异常打开   套接字},由{java.net.ConnectException:连接被拒绝}}]引起;   嵌套的异常是com.mongodb.MongoTimeoutException:在之后超时   等待匹配的服务器时30000毫秒   WritableServerSelector。群集状态的客户端视图为{type = UNKNOWN,   服务器= [{地址=本地主机:27017,类型=未知,状态=正在连接,   exception = {com.mongodb.MongoSocketOpenException:异常打开   套接字},由{java.net.ConnectException:拒绝连接}}引起]   2019-06-13 15:49:14.769错误[ZZZZZZ ,,,] 1 --- [main]   o.s.boot.SpringApplication:应用程序启动失败

1 个答案:

答案 0 :(得分:0)

确保未将mongo设置为自动配置。经过大量的研究后,我意识到我的问题不是容器,而是Mongo自动配置,它将不会连接到除本地主机以外的任何设备。

创建一个Mongoclient, 在MongoFactory中使用它 并在MongoTemplate中使用它 用配置注释对所有这些进行注释。 还要从自动配置中排除Mongo,这就是您将获得手动配置mongo的方式。 使用配置文件对其进行测试,以使用不同的主机名进行测试。一旦工作 dockerize它,如果您的端口等正确完成,则您应该能够连接两个容器。