Mongo-Express started by Docker-Compose causing Error [MongoError]: failed to connect to server [mongo:27017] on first connect
Asked Answered
S

4

7

Scenario: I want to start both Mongo and Mongo-Express from same docker-compose.

I have no issue starting only mongodb from docker-compose. The issue raises when I try to link Mongo-Express to Mongo DB Service.

I am not sure if I am missing either some configuration in docker-compose or in my mongo-express settup. I am not expecting the issue being part of Mongo settup. BTW, I pasted bellow whole docker-compose and and its output.

From bellow logs I can see there is no issue raising Mongo. There is some issue when mongo-express tries connect to Mongo service probably because I didn't settup link properly. On top of that, my Spring Webflux is connecting succesfully to Mongo DB with bellow propertis. The issue is really limited to mongo-express reaching mongodb.

application.yml that allows Spring Data (spring-boot-starter-data-mongodb-reactive) connects successfuly to such MongoDb

spring:
  data:
    mongodb:
      host: 192.168.99.100
      port:  27017
      database: demodb
      authentication-database: admin
      username: root
      password: rootpassword

docker-compose.yml

version: '3.7'

services:
  mongo-express:
    image: mongo-express
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_BASICAUTH_USERNAME: admin
      ME_CONFIG_BASICAUTH_PASSWORD: q
      ME_CONFIG_MONGODB_PORT: 27017
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: rootpassword
    links:
      - mongo-db
    networks:
      - mongo-compose-network

  mongo-db:
    image: mongo:latest
    environment:
      MONGO_INITDB_DATABASE: demodb  
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: rootpassword
    ports:
      - "27017:27017"
    volumes:
      - mongodb_data_container:/data/db
    networks:
      - mongo-compose-network

networks: 
    mongo-compose-network:
      driver: bridge

volumes:
  mongodb_data_container:       

output

PS C:\Dockers\mongodb\express> docker-compose up
Creating express_mongo_1 ... done                                                                                                      Creating express_mongo-express_1 ... done                                                                                              Attaching to express_mongo_1, express_mongo-express_1
mongo_1          | 2020-03-18T21:49:37.366+0000 I  CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
mongo_1          | 2020-03-18T21:49:37.370+0000 I  CONTROL  [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=8c1f22435085
mongo_1          | 2020-03-18T21:49:37.370+0000 I  CONTROL  [initandlisten] db version v4.2.3
mongo_1          | 2020-03-18T21:49:37.370+0000 I  CONTROL  [initandlisten] git version: 6874650b362138df74be53d366bbefc321ea32d4
mongo_1          | 2020-03-18T21:49:37.370+0000 I  CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.1.1  11 Sep 2018
mongo_1          | 2020-03-18T21:49:37.370+0000 I  CONTROL  [initandlisten] allocator: tcmalloc
mongo_1          | 2020-03-18T21:49:37.370+0000 I  CONTROL  [initandlisten] modules: none
mongo-express_1  | Waiting for mongo:27017...
mongo_1          | 2020-03-18T21:49:37.370+0000 I  CONTROL  [initandlisten] build environment:
mongo_1          | 2020-03-18T21:49:37.371+0000 I  CONTROL  [initandlisten]     distmod: ubuntu1804
mongo_1          | 2020-03-18T21:49:37.371+0000 I  CONTROL  [initandlisten]     distarch: x86_64
mongo_1          | 2020-03-18T21:49:37.371+0000 I  CONTROL  [initandlisten]     target_arch: x86_64
mongo_1          | 2020-03-18T21:49:37.371+0000 I  CONTROL  [initandlisten] options: { net: { bindIp: "*" }, security: { authorization: "enabled" } }
mongo-express_1  | /docker-entrypoint.sh: connect: Connection refused
mongo_1          | 2020-03-18T21:49:37.373+0000 I  STORAGE  [initandlisten] Detected data files in /data/db created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
mongo_1          | 2020-03-18T21:49:37.373+0000 I  STORAGE  [initandlisten]
mongo_1          | 2020-03-18T21:49:37.373+0000 I  STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
mongo_1          | 2020-03-18T21:49:37.373+0000 I  STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
mongo_1          | 2020-03-18T21:49:37.374+0000 I  STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=486M,cache_overflow=(file_max=0M),session_max=33000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000,close_scan_interval=10,close_handle_minimum=250),statistics_log=(wait=0),verbose=[recovery_progress,checkpoint_progress],
mongo_1          | 2020-03-18T21:49:38.229+0000 I  STORAGE  [initandlisten] WiredTiger message [1584568178:229680][1:0x7f9df38f3b00], txn-recover: Recovering log 5 through 6
mongo_1          | 2020-03-18T21:49:38.261+0000 I  STORAGE  [initandlisten] WiredTiger message [1584568178:261407][1:0x7f9df38f3b00], txn-recover: Recovering log 6 through 6
mongo_1          | 2020-03-18T21:49:38.313+0000 I  STORAGE  [initandlisten] WiredTiger message [1584568178:313791][1:0x7f9df38f3b00], txn-recover: Main recovery loop: starting at 5/6144 to 6/256
mongo_1          | 2020-03-18T21:49:38.378+0000 I  STORAGE  [initandlisten] WiredTiger message [1584568178:378014][1:0x7f9df38f3b00], txn-recover: Recovering log 5 through 6
mongo_1          | 2020-03-18T21:49:38.448+0000 I  STORAGE  [initandlisten] WiredTiger message [1584568178:448927][1:0x7f9df38f3b00], txn-recover: Recovering log 6 through 6
mongo_1          | 2020-03-18T21:49:38.480+0000 I  STORAGE  [initandlisten] WiredTiger message [1584568178:480668][1:0x7f9df38f3b00], txn-recover: Set global recovery timestamp: (0, 0)
mongo_1          | 2020-03-18T21:49:38.505+0000 I  RECOVERY [initandlisten] WiredTiger recoveryTimestamp. Ts: Timestamp(0, 0)
mongo_1          | 2020-03-18T21:49:38.519+0000 I  STORAGE  [initandlisten] Timestamp monitor starting
mongo_1          | 2020-03-18T21:49:38.530+0000 I  SHARDING [initandlisten] Marking collection local.system.replset as collection version: <unsharded>
mongo_1          | 2020-03-18T21:49:38.535+0000 I  STORAGE  [initandlisten] Flow Control is enabled on this deployment.
mongo_1          | 2020-03-18T21:49:38.535+0000 I  SHARDING [initandlisten] Marking collection admin.system.roles as collection version: <unsharded>
mongo_1          | 2020-03-18T21:49:38.536+0000 I  SHARDING [initandlisten] Marking collection admin.system.version as collection version: <unsharded>
mongo_1          | 2020-03-18T21:49:38.541+0000 I  SHARDING [initandlisten] Marking collection local.startup_log as collection version: <unsharded>
mongo_1          | 2020-03-18T21:49:38.542+0000 I  FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data'
mongo_1          | 2020-03-18T21:49:38.544+0000 I  SHARDING [LogicalSessionCacheRefresh] Marking collection config.system.sessions as collection version: <unsharded>
mongo_1          | 2020-03-18T21:49:38.545+0000 I  SHARDING [LogicalSessionCacheReap] Marking collection config.transactions as collection version: <unsharded>
mongo_1          | 2020-03-18T21:49:38.546+0000 I  NETWORK  [listener] Listening on /tmp/mongodb-27017.sock
mongo_1          | 2020-03-18T21:49:38.546+0000 I  NETWORK  [listener] Listening on 0.0.0.0
mongo-express_1  | /docker-entrypoint.sh: line 14: /dev/tcp/mongo/27017: Connection refused
mongo_1          | 2020-03-18T21:49:38.546+0000 I  NETWORK  [listener] waiting for connections on port 27017
mongo_1          | 2020-03-18T21:49:38.863+0000 I  NETWORK  [listener] connection accepted from 172.22.0.3:53802 #1 (1 connection now open)
mongo_1          | 2020-03-18T21:49:38.864+0000 I  NETWORK  [conn1] end connection 172.22.0.3:53802 (0 connections now open)
mongo-express_1  | Wed Mar 18 21:49:38 UTC 2020 retrying to connect to mongo:27017 (2/5)
mongo-express_1  | Welcome to mongo-express
mongo-express_1  | ------------------------
mongo-express_1  |
mongo-express_1  |
mongo-express_1  | Mongo Express server listening at http://0.0.0.0:8081
mongo_1          | 2020-03-18T21:49:39.000+0000 I  SHARDING [ftdc] Marking collection local.oplog.rs as collection version: <unsharded>
mongo_1          | 2020-03-18T21:49:39.338+0000 I  NETWORK  [listener] connection accepted from 172.22.0.3:53804 #2 (1 connection now open)
mongo-express_1  | Server is open to allow connections from anyone (0.0.0.0)
mongo_1          | 2020-03-18T21:49:39.344+0000 I  NETWORK  [conn2] received client metadata from 172.22.0.3:53804 conn2: { driver: { name: "nodejs", version: "2.2.24" }, os: { type: "Linux", name: "linux", architecture: "x64", version: "4.14.154-boot2docker" }, platform: "Node.js v12.16.1, LE, mongodb-core: 2.1.8" }
mongo_1          | 2020-03-18T21:49:39.350+0000 I  SHARDING [conn2] Marking collection admin.system.users as collection version: <unsharded>
mongo-express_1  | Database connected
mongo_1          | 2020-03-18T21:49:39.809+0000 I  ACCESS   [conn2] Successfully authenticated as principal root on admin from client 172.22.0.3:53804
mongo_1          | 2020-03-18T21:49:39.816+0000 I  NETWORK  [listener] connection accepted from 172.22.0.3:53806 #3 (2 connections now open)
mongo_1          | 2020-03-18T21:49:39.821+0000 I  NETWORK  [listener] connection accepted from 192.168.99.1:51536 #4 (3 connections now open)
mongo_1          | 2020-03-18T21:49:39.822+0000 I  NETWORK  [conn4] received client metadata from 192.168.99.1:51536 conn4: { driver: { name: "mongo-java-driver|legacy", version: "3.11.2" }, os: { type: "Windows", name: "Windows 10", architecture: "amd64", version: "10.0" }, platform: "Java/Oracle Corporation/11.0.6+8-LTS" }
mongo_1          | 2020-03-18T21:49:39.927+0000 I  ACCESS   [conn3] Successfully authenticated as principal root on admin from client 172.22.0.3:53806
mongo_1          | 2020-03-18T21:49:40.759+0000 I  NETWORK  [listener] connection accepted from 192.168.99.1:51537 #5 (4 connections now open)
mongo_1          | 2020-03-18T21:49:40.761+0000 I  NETWORK  [conn5] received client metadata from 192.168.99.1:51537 conn5: { driver: { name: "mongo-java-driver|async|mongo-java-driver-reactivestreams", version: "3.11.2|1.12.0" }, os: { type: "Windows", name: "Windows 10", architecture: "amd64", version: "10.0" }, platform: "Java/Oracle Corporation/11.0.6+8-LTS" }
mongo_1          | 2020-03-18T21:50:39.101+0000 I  NETWORK  [conn4] end connection 192.168.99.1:51536 (3 connections now open)
mongo_1          | 2020-03-18T21:50:39.102+0000 I  NETWORK  [conn5] end connection 192.168.99.1:51537 (2 connections now open)
mongo_1          | 2020-03-18T21:50:57.344+0000 I  NETWORK  [listener] connection accepted from 192.168.99.1:51576 #6 (3 connections now open)
mongo_1          | 2020-03-18T21:50:57.355+0000 I  NETWORK  [conn6] received client metadata from 192.168.99.1:51576 conn6: { driver: { name: "mongo-java-driver|legacy", version: "3.11.2" }, os: { type: "Windows", name: "Windows 10", architecture: "amd64", version: "10.0" }, platform: "Java/Oracle Corporation/11.0.6+8-LTS" }
mongo_1          | 2020-03-18T21:50:58.325+0000 I  NETWORK  [listener] connection accepted from 192.168.99.1:51593 #7 (4 connections now open)
mongo_1          | 2020-03-18T21:50:58.355+0000 I  NETWORK  [conn7] received client metadata from 192.168.99.1:51593 conn7: { driver: { name: "mongo-java-driver|async|mongo-java-driver-reactivestreams", version: "3.11.2|1.12.0" }, os: { type: "Windows", name: "Windows 10", architecture: "amd64", version: "10.0" }, platform: "Java/Oracle Corporation/11.0.6+8-LTS" }
mongo_1          | 2020-03-18T22:04:09.075+0000 I  NETWORK  [conn6] end connection 192.168.99.1:51576 (3 connections now open)
Gracefully stopping... (press Ctrl+C again to force)
Stopping express_mongo-express_1 ...
Stopping express_mongo_1         ...
Killing express_mongo_1          ... done                                                                                              PS C:\Dockers\mongodb\express> docker-compose down --remove-orphans
Removing express_mongo-express_1 ... done                                                                                              Removing express_mongo_1         ... done                                                                                              Removing network express_mongox-compose-network
PS C:\Dockers\mongodb\express> docker-compose up
Creating network "express_mongo-compose-network" with driver "bridge"
Creating express_mongo-db_1 ... done                                                                                                   Creating express_mongo-express_1 ... done                                                                                              Attaching to express_mongo-db_1, express_mongo-express_1
mongo-db_1       | 2020-03-18T22:06:12.909+0000 I  CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
mongo-db_1       | 2020-03-18T22:06:12.913+0000 I  CONTROL  [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=d59ff752b4e0
mongo-db_1       | 2020-03-18T22:06:12.913+0000 I  CONTROL  [initandlisten] db version v4.2.3
mongo-db_1       | 2020-03-18T22:06:12.913+0000 I  CONTROL  [initandlisten] git version: 6874650b362138df74be53d366bbefc321ea32d4
mongo-db_1       | 2020-03-18T22:06:12.913+0000 I  CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.1.1  11 Sep 2018
mongo-db_1       | 2020-03-18T22:06:12.913+0000 I  CONTROL  [initandlisten] allocator: tcmalloc
mongo-db_1       | 2020-03-18T22:06:12.914+0000 I  CONTROL  [initandlisten] modules: none
mongo-db_1       | 2020-03-18T22:06:12.914+0000 I  CONTROL  [initandlisten] build environment:
mongo-db_1       | 2020-03-18T22:06:12.914+0000 I  CONTROL  [initandlisten]     distmod: ubuntu1804
mongo-db_1       | 2020-03-18T22:06:12.917+0000 I  CONTROL  [initandlisten]     distarch: x86_64
mongo-db_1       | 2020-03-18T22:06:12.917+0000 I  CONTROL  [initandlisten]     target_arch: x86_64
mongo-db_1       | 2020-03-18T22:06:12.917+0000 I  CONTROL  [initandlisten] options: { net: { bindIp: "*" }, security: { authorization: "enabled" } }
mongo-db_1       | 2020-03-18T22:06:12.917+0000 W  STORAGE  [initandlisten] Detected unclean shutdown - /data/db/mongod.lock is not empty.
mongo-db_1       | 2020-03-18T22:06:12.918+0000 I  STORAGE  [initandlisten] Detected data files in /data/db created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
mongo-db_1       | 2020-03-18T22:06:12.918+0000 W  STORAGE  [initandlisten] Recovering data from the last clean checkpoint.
mongo-db_1       | 2020-03-18T22:06:12.918+0000 I  STORAGE  [initandlisten]
mongo-db_1       | 2020-03-18T22:06:12.918+0000 I  STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
mongo-db_1       | 2020-03-18T22:06:12.918+0000 I  STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
mongo-express_1  | Waiting for mongo:27017...
mongo-express_1  | /docker-entrypoint.sh: line 14: mongo: Name does not resolve
mongo-db_1       | 2020-03-18T22:06:12.919+0000 I  STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=486M,cache_overflow=(file_max=0M),session_max=33000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000,close_scan_interval=10,close_handle_minimum=250),statistics_log=(wait=0),verbose=[recovery_progress,checkpoint_progress],
mongo-db_1       | 2020-03-18T22:06:13.820+0000 I  STORAGE  [initandlisten] WiredTiger message [1584569173:820960][1:0x7fc8832f2b00], txn-recover: Recovering log 6 through 7
mongo-db_1       | 2020-03-18T22:06:13.852+0000 I  STORAGE  [initandlisten] WiredTiger message [1584569173:852058][1:0x7fc8832f2b00], txn-recover: Recovering log 7 through 7
mongo-db_1       | 2020-03-18T22:06:13.905+0000 I  STORAGE  [initandlisten] WiredTiger message [1584569173:905743][1:0x7fc8832f2b00], txn-recover: Main recovery loop: starting at 6/5760 to 7/256
mongo-db_1       | 2020-03-18T22:06:13.987+0000 I  STORAGE  [initandlisten] WiredTiger message [1584569173:987253][1:0x7fc8832f2b00], txn-recover: Recovering log 6 through 7
mongo-db_1       | 2020-03-18T22:06:14.031+0000 I  STORAGE  [initandlisten] WiredTiger message [1584569174:31988][1:0x7fc8832f2b00], txn-recover: Recovering log 7 through 7
mongo-db_1       | 2020-03-18T22:06:14.064+0000 I  STORAGE  [initandlisten] WiredTiger message [1584569174:64661][1:0x7fc8832f2b00], txn-recover: Set global recovery timestamp: (0, 0)
mongo-db_1       | 2020-03-18T22:06:14.106+0000 I  RECOVERY [initandlisten] WiredTiger recoveryTimestamp. Ts: Timestamp(0, 0)
mongo-db_1       | 2020-03-18T22:06:14.115+0000 I  STORAGE  [initandlisten] Timestamp monitor starting
mongo-db_1       | 2020-03-18T22:06:14.122+0000 I  SHARDING [initandlisten] Marking collection local.system.replset as collection version: <unsharded>
mongo-db_1       | 2020-03-18T22:06:14.126+0000 I  STORAGE  [initandlisten] Flow Control is enabled on this deployment.
mongo-db_1       | 2020-03-18T22:06:14.126+0000 I  SHARDING [initandlisten] Marking collection admin.system.roles as collection version: <unsharded>
mongo-db_1       | 2020-03-18T22:06:14.126+0000 I  SHARDING [initandlisten] Marking collection admin.system.version as collection version: <unsharded>
mongo-db_1       | 2020-03-18T22:06:14.130+0000 I  SHARDING [initandlisten] Marking collection local.startup_log as collection version: <unsharded>
mongo-db_1       | 2020-03-18T22:06:14.130+0000 I  FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data'
mongo-db_1       | 2020-03-18T22:06:14.132+0000 I  SHARDING [LogicalSessionCacheRefresh] Marking collection config.system.sessions as collection version: <unsharded>
mongo-db_1       | 2020-03-18T22:06:14.133+0000 I  SHARDING [LogicalSessionCacheReap] Marking collection config.transactions as collection version: <unsharded>
mongo-db_1       | 2020-03-18T22:06:14.133+0000 I  NETWORK  [listener] Listening on /tmp/mongodb-27017.sock
mongo-db_1       | 2020-03-18T22:06:14.133+0000 I  NETWORK  [listener] Listening on 0.0.0.0
mongo-express_1  | /docker-entrypoint.sh: line 14: /dev/tcp/mongo/27017: Invalid argument
mongo-express_1  | Wed Mar 18 22:06:14 UTC 2020 retrying to connect to mongo:27017 (2/5)
mongo-express_1  | /docker-entrypoint.sh: line 14: mongo: Name does not resolve
mongo-db_1       | 2020-03-18T22:06:14.133+0000 I  NETWORK  [listener] waiting for connections on port 27017
mongo-db_1       | 2020-03-18T22:06:15.054+0000 I  FTDC     [ftdc] Unclean full-time diagnostic data capture shutdown detected, found interim file, some metrics may have been lost. OK
mongo-express_1  | /docker-entrypoint.sh: line 14: /dev/tcp/mongo/27017: Invalid argument
mongo-express_1  | Wed Mar 18 22:06:15 UTC 2020 retrying to connect to mongo:27017 (3/5)
mongo-express_1  | /docker-entrypoint.sh: line 14: mongo: Name does not resolve
mongo-express_1  | /docker-entrypoint.sh: line 14: /dev/tcp/mongo/27017: Invalid argument
mongo-express_1  | Wed Mar 18 22:06:16 UTC 2020 retrying to connect to mongo:27017 (4/5)
mongo-express_1  | /docker-entrypoint.sh: line 14: mongo: Name does not resolve
mongo-express_1  | /docker-entrypoint.sh: line 14: /dev/tcp/mongo/27017: Invalid argument
mongo-express_1  | Wed Mar 18 22:06:18 UTC 2020 retrying to connect to mongo:27017 (5/5)
mongo-express_1  | /docker-entrypoint.sh: line 14: mongo: Name does not resolve
mongo-express_1  | /docker-entrypoint.sh: line 14: /dev/tcp/mongo/27017: Invalid argument
mongo-express_1  | Welcome to mongo-express
mongo-express_1  | ------------------------
mongo-express_1  |
mongo-express_1  |
mongo-express_1  | Mongo Express server listening at http://0.0.0.0:8081
mongo-express_1  | Server is open to allow connections from anyone (0.0.0.0)
mongo-express_1  |
mongo-express_1  | /node_modules/mongodb/lib/server.js:265
mongo-express_1  |         process.nextTick(function() { throw err; })
mongo-express_1  |                                       ^
mongo-express_1  | Error [MongoError]: failed to connect to server [mongo:27017] on first connect
mongo-express_1  |     at Pool.<anonymous> (/node_modules/mongodb-core/lib/topologies/server.js:326:35)
mongo-express_1  |     at Pool.emit (events.js:311:20)
mongo-express_1  |     at Connection.<anonymous> (/node_modules/mongodb-core/lib/connection/pool.js:270:12)
mongo-express_1  |     at Object.onceWrapper (events.js:418:26)
mongo-express_1  |     at Connection.emit (events.js:311:20)
mongo-express_1  |     at Socket.<anonymous> (/node_modules/mongodb-core/lib/connection/connection.js:175:49)
mongo-express_1  |     at Object.onceWrapper (events.js:418:26)
mongo-express_1  |     at Socket.emit (events.js:311:20)
mongo-express_1  |     at emitErrorNT (internal/streams/destroy.js:92:8)
mongo-express_1  |     at emitErrorAndCloseNT (internal/streams/destroy.js:60:3) {
mongo-express_1  |   name: 'MongoError',
mongo-express_1  |   message: 'failed to connect to server [mongo:27017] on first connect'
mongo-express_1  | }
express_mongo-express_1 exited with code 1
Semiweekly answered 18/3, 2020 at 22:19 Comment(3)
Try adding container_name for mongo-db service and use that name in ME_CONFIG_MONGODB_SERVER environment variable in mongo-express service. You can also remove links because it's a legacy feature. Also, you can add depends_on in your mongo-express service.Coinage
@StefanGolubović I replace link by depend_on as you suggested. I am wondering if I should use depends_on or user-defined networks as said in docs.docker.com/compose/compose-file/#links. "... we recommend that you use user-defined networks to facilitate communication between two containers instead of using --link."Semiweekly
You are already using a user-defined network since you defined mongo-compose-network in your compose file. You should use depends_on only to express dependencies between services and to ensure that, for example, mongo-db service is started before mongo-express service because it uses DB. But that doesn't mean that mongo-express service will wait until DB is ready to start executing.Coinage
O
13

According to the docs, you should use an ENV called ME_CONFIG_MONGODB_SERVER

ME_CONFIG_MONGODB_SERVER : MongoDB container name. Use comma delimited list of host names for replica sets.

  services:
  mongo-express:
    image: mongo-express
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_SERVER: mongo-server
      ME_CONFIG_BASICAUTH_USERNAME: admin
      ME_CONFIG_BASICAUTH_PASSWORD: q
      ME_CONFIG_MONGODB_PORT: 27017
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: rootpassword
    links:
      - mongo-db
    networks:
      - mongo-compose-network

  mongo-db:
    image: mongo:latest
    container_name: mongo-server
    environment:
      MONGO_INITDB_DATABASE: demodb  
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: rootpassword
    ports:
      - "27017:27017"
    volumes:
      - mongodb_data_container:/data/db
    networks:
      - mongo-compose-network

networks: 
    mongo-compose-network:
      driver: bridge

volumes:
  mongodb_data_container:
Oftentimes answered 18/3, 2020 at 23:0 Comment(2)
by adding ME_CONFIG_MONGODB_SERVER: mongo-db my issue was fixedSemiweekly
Greate, happy to helpOftentimes
A
5

I faced with same problem

I used docker-compose example from mongo docker official image documentation

# Use root/example as user/password credentials
version: '3.1'

services:

mongo:
  image: mongo
  restart: always
  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

I solved my issue by adding depends_on: - mongo in the end

# Use root/example as user/password credentials
version: '3.1'

services:

mongo:
  image: mongo
  restart: always
  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
  depends_on:
    - mongo
Allen answered 9/3, 2021 at 13:38 Comment(1)
This one worked for me. I knew the configuration was correct because it worked about half the time, but this makes it work reliably.Phototransistor
B
1

Notice that it has reached the max attempts, 5/5:

"mongo-express_1 | Wed Mar 18 22:06:18 UTC 2020 retrying to connect to mongo:27017 (5/5)"

There are many articles on StackOverflow with this problem and many people trying to guess answers of many kinds. I was able to solve my problem changing the number of max_tries but that required a patch in the mongo-express-docker project.

Bounty answered 10/2, 2021 at 18:5 Comment(0)
T
0

This issue was resolved for me with the key property below, under MONGO-EXPRESS container.

restart: always

Full Docker file below:

version: '3'
services:
  mongodb:
    image: mongo
    ports:
      - 27017:27017
    environment:
      - MONGO_INITDB_ROOT_USERNAME=admin
      - MONGO_INITDB_ROOT_PASSWORD=password
  
  mongo-express:
    image: mongo-express
    ports:
      - 8080:8081
    environment:
      - ME_CONFIG_MONGODB_ADMINUSERNAME=admin
      - ME_CONFIG_MONGODB_ADMINPASSWORD=password
      - ME_CONFIG_MONGODB_SERVER=mongodb
    restart: always
Triform answered 8/9, 2022 at 14:2 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.