我有一个Spring Boot Micro服务,可以调用Mongo DB。
要在我的本地计算机上进行设置。我在本地docker:localhost:27017处设置了Mongo DB容器。
我试图在端口8082上启动Spring boot Micro服务应用程序,并且成功。
我现在想在Docker this中运行它们。
我无法在docker中运行该应用
步骤:
docker run -d -p 27017:27017 --name mongo -d mongo:latest
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:应用程序启动失败
答案 0 :(得分:0)
确保未将mongo设置为自动配置。经过大量的研究后,我意识到我的问题不是容器,而是Mongo自动配置,它将不会连接到除本地主机以外的任何设备。
创建一个Mongoclient, 在MongoFactory中使用它 并在MongoTemplate中使用它 用配置注释对所有这些进行注释。 还要从自动配置中排除Mongo,这就是您将获得手动配置mongo的方式。 使用配置文件对其进行测试,以使用不同的主机名进行测试。一旦工作 dockerize它,如果您的端口等正确完成,则您应该能够连接两个容器。