Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 连接拒绝尝试连接到mongoDB docker实例_Java_Mongodb_Spring Boot_Docker_Spring Data Jpa - Fatal编程技术网

Java 连接拒绝尝试连接到mongoDB docker实例

Java 连接拒绝尝试连接到mongoDB docker实例,java,mongodb,spring-boot,docker,spring-data-jpa,Java,Mongodb,Spring Boot,Docker,Spring Data Jpa,我正在尝试使用带有JPA的MongoDB部署一个简单的应用程序,但我无法让它正常工作 当我在docker容器中部署应用程序时,我不断收到以下错误: 2020-10-05 18:47:39.770 INFO 1 --- [localhost:27017] org.mongodb.driver.cluster : Exception in monitor thread while connecting to server localhost:27017 com.mongodb.MongoSocke

我正在尝试使用带有JPA的MongoDB部署一个简单的应用程序,但我无法让它正常工作

当我在docker容器中部署应用程序时,我不断收到以下错误:

2020-10-05 18:47:39.770 INFO 1 --- [localhost:27017] org.mongodb.driver.cluster : Exception in monitor thread while connecting to server localhost:27017

com.mongodb.MongoSocketOpenException: Exception opening socket
    at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:70) ~[mongodb-driver-core-4.0.5.jar!/:na]
    at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:127) ~[mongodb-driver-core-4.0.5.jar!/:na]
    at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:117) ~[mongodb-driver-core-4.0.5.jar!/:na]
    at java.lang.Thread.run(Thread.java:748) [na:1.8.0_212]
Caused by: java.net.ConnectException: Connection refused (Connection refused)
    at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_212]
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_212]
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_212]
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_212]
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_212]
    at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_212]
    at com.mongodb.internal.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:63) ~[mongodb-driver-core-4.0.5.jar!/:na]
    at com.mongodb.internal.connection.SocketStream.initializeSocket(SocketStream.java:79) ~[mongodb-driver-core-4.0.5.jar!/:na]
    at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:65) ~[mongodb-driver-core-4.0.5.jar!/:na]
    ... 3 common frames omitted
这是我用来构建映像的dockerfile:

FROM openjdk:8-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
还有我用来运行mongoDB的docker-compose.yml:

使用root/示例作为用户/密码凭据 版本:“3.1” 服务: 蒙戈: 图片:mongo 重新启动:始终 环境: MONGO_INITDB_ROOT_用户名:ROOT MONGO_INITDB_ROOT_密码:示例 mongo express: 图片:mongo express 重新启动:始终 端口: - 8081:8081 环境: ME\u CONFIG\u MONGODB\u管理员用户名:root ME_CONFIG_MONGODB_ADMINPASSWORD:示例 我的实体都遵循以下模式作为实体的名称:

@文件 @资料 @建筑商 @AllArgsConstructor @诺尔格构装师 公共类实体{ @身份证 私有整数Id; //更多数据 } 我的JPA存储库如上所述,是JPA类和实体的名称:

公共接口JPA扩展了MongoRepository{ } 最后,我在application.properties下定义了以下属性:

spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=api-database
spring.data.mongodb.username=root
spring.data.mongodb.password=example
spring.data.mongodb.repositories.enabled=true

我可以连接到localhost:8081以查看mongo express接口,但从中看不到任何内容。

容器的localhost就是容器。由于您将mongodb和应用程序放在不同的容器中,因此它们不能以这种方式连接,但您可以,因为您可以通过映射端口从主机进行连接。只需将localhost更改为mongo,您就可以了。

此外,我必须将端口放在host属性中,而不是为其定义另一个属性。非常感谢你!