简体   繁体   English

Docker 容器未连接 mongodb 主机

[英]Docker container not connecting mongodb host

I'm facing MongoDB connection issue from docker container, i read few stackoverflow answers but not helped me to solve my issue.我正面临来自 docker 容器的 MongoDB 连接问题,我阅读了一些 stackoverflow 答案,但没有帮助我解决我的问题。

My application.yml file has the following,我的 application.yml 文件有以下内容,

spring:
   application:
    name: web-ui-service
   data:
     mongodb:
       uri: mongodb://<username>:<pwd>@172.17.0.1:27017/database

and My docker-compose file has the following,我的 docker-compose 文件有以下内容,

version: '3.5' services:版本:'3.5' 服务:

sp-app-web-ui:
  container_name: sp-app-web-ui
  image: swimming-pool/web-ui-service
    environment:
    - DOCKER_HOST_IP=mongodb://172.17.0.1:27017
     - SPRING_DATA_MONGODB_DATABASE=swimming-pool
   ports:
     - 8080:8080
   networks:
     - swimming-pool-app
       restart: unless-stopped

     networks:
       swimming-pool-app:
     default:
       driver: bridge

I read this blog From inside of a Docker container, how do I connect to the localhost of the machine?从 Docker 容器内部阅读了这篇博客,如何连接到机器的本地主机?

but still am facing the following issue,但仍然面临以下问题,

sp-app-web-ui | sp-app-web-ui | com.mongodb.MongoSocketOpenException: Exception opening socket sp-app-web-ui | com.mongodb.MongoSocketOpenException: 异常打开套接字 sp-app-web-ui | at com.mongodb.connection.SocketStream.open(SocketStream.java:63) ~[mongodb-driver-core-3.4.2.jar!/:na] sp-app-web-ui |在 com.mongodb.connection.SocketStream.open(SocketStream.java:63) ~[mongodb-driver-core-3.4.2.jar!/:na] sp-app-web-ui | at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:115) ~[mongodb-driver-core-3.4.2.jar!/:na] sp-app-web-ui |在 com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:115) ~[mongodb-driver-core-3.4.2.jar!/:na] sp-app-web-ui | at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:113) ~[mongodb-driver-core-3.4.2.jar!/:na] sp-app-web-ui |在 com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:113) ~[mongodb-driver-core-3.4.2.jar!/:na] sp-app-web-ui | at java.lang.Thread.run(Thread.java:745) [na:1.8.0_111] sp-app-web-ui |在 java.lang.Thread.run(Thread.java:745) [na:1.8.0_111] sp-app-web-ui | Caused by: java.net.ConnectException: Connection refused (Connection refused) sp-app-web-ui |引起:java.net.ConnectException:连接被拒绝(连接被拒绝)sp-app-web-ui | at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_111] sp-app-web-ui |在 java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_111] sp-app-web-ui | at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_111] sp-app-web-ui |在 java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_111] sp-app-web-ui | at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_111] sp-app-web-ui |在 java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_111] sp-app-web-ui | at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_111] sp-app-web-ui |在 java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_111] sp-app-web-ui | at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_111] sp-app-web-ui |在 java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_111] sp-app-web-ui | at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_111] sp-app-web-ui |在 java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_111] sp-app-web-ui | at com.mongodb.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:57) ~[mongodb-driver-core-3.4.2.jar!/:na] sp-app-web-ui |在 com.mongodb.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:57) ~[mongodb-driver-core-3.4.2.jar!/:na] sp-app-web-ui | at com.mongodb.connection.SocketStream.open(SocketStream.java:58) ~[mongodb-driver-core-3.4.2.jar!/:na]在 com.mongodb.connection.SocketStream.open(SocketStream.java:58) ~[mongodb-driver-core-3.4.2.jar!/:na]

I'm using Debian and Docker 18.06.我正在使用 Debian 和 Docker 18.06。 It would be great if you anyone help me out.如果有人帮助我,那就太好了。 Thanks in advance!提前致谢!

I have solved the question, my docker-compose file looks as below, 我已经解决了这个问题,我的docker-compose文件如下所示,

version: '3.5'

services:

  sp-app-web-ui:
  container_name: sp-app-web-ui
  image: swimming-pool/web-ui-service
  environment:
    - SPRING_PROFILES_ACTIVE=dev
  ports:
    - 8080:8080
  network_mode: host

and add "127.0.0.1" in mongo.conf file in the bindIp variable. 并在bindIp变量的mongo.conf文件中添加“ 127.0.0.1”。

My application.yml has the following, 我的application.yml具有以下内容,

spring:
   application:
    name: web-ui-service
    data:
     mongodb:
       uri: mongodb://<username>:<pwd>@172.0.0.1:27017/database

This IP 127.0.0.1 got it from docker0 when you ping ip a on linux. 在Linux上ping ip a时,此IP 127.0.0.1是从docker0获得的。

What you may be looking for is to add network_mode: "host" to your docker compose service: 您可能正在寻找的是向您的docker compose服务添加network_mode: "host"

sp-app-web-ui:
  container_name: sp-app-web-ui
  image: swimming-pool/web-ui-service
    environment:
    - DOCKER_HOST_IP=mongodb://172.17.0.1:27017
     - SPRING_DATA_MONGODB_DATABASE=swimming-pool
   ports:
     - 8080:8080

   # https://docs.docker.com/compose/compose-file/#network_mode
   network_mode: "host"

You can read more about in the docs 您可以在文档中了解更多信息

Use the docker-compose.yml below.使用下面的 docker-compose.yml。 Then run mongodb and mongo-express (UI to access mongodb)然后运行mongodb和mongo-express(访问mongodb的UI)

version: '3.1'

services:

  mongo:
    image: mongo:4.4.5
    restart: always
    ports:
      - 27017:27017
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
  
  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: example
      ME_CONFIG_MONGODB_URL: mongodb://root:example@mongo:27017/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM