如何訪問由Docker使用RoboMongo或類似軟件創建的mongo數據庫?Docker + MongoDB:如何使用RoboMongo查看數據庫?
在使用Doncker之前,我已經在我的Linux機器上安裝了mongodb。所以我不能在docker-compse.yml中使用端口「27017:27017」。我使用「27018:27018」:
version: "2"
services:
web:
build: .
ports:
- "3000:3000"
links:
- mongo
mongo:
image: mongo
volumes:
- /data/mongodb/db:/data/db
ports:
- "27018:27018"
我可以用RoboMongo來查看我在泊塢窗預蒙戈創建的所有數據庫。但是,我怎樣才能訪問Docker的?
這是我的DockerFile:
FROM mhart/alpine-node:latest
ADD package.json /tmp/package.json
RUN cd /tmp && npm install
RUN mkdir -p /opt/app && cp -a /tmp/node_modules /opt/app/
WORKDIR /opt/app
ADD . /opt/app
EXPOSE 3000
CMD ["npm", "start"]
編輯:
當我運行我的終端上的搬運工:
$ docker-compose up
Starting dummyapp_mongo_1
Recreating dummyapp_web_1
Attaching to dummyapp_mongo_1, dummyapp_web_1
mongo_1 | 2017-01-03T10:20:35.083+0000 I CONTROL [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=571498710dc0
mongo_1 | 2017-01-03T10:20:35.083+0000 I CONTROL [initandlisten] db version v3.4.1
mongo_1 | 2017-01-03T10:20:35.083+0000 I CONTROL [initandlisten] git version: 5e103c4f5583e2566a45d740225dc250baacfbd7
mongo_1 | 2017-01-03T10:20:35.083+0000 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.1t 3 May 2016
mongo_1 | 2017-01-03T10:20:35.083+0000 I CONTROL [initandlisten] allocator: tcmalloc
mongo_1 | 2017-01-03T10:20:35.083+0000 I CONTROL [initandlisten] modules: none
mongo_1 | 2017-01-03T10:20:35.083+0000 I CONTROL [initandlisten] build environment:
mongo_1 | 2017-01-03T10:20:35.083+0000 I CONTROL [initandlisten] distmod: debian81
mongo_1 | 2017-01-03T10:20:35.083+0000 I CONTROL [initandlisten] distarch: x86_64
mongo_1 | 2017-01-03T10:20:35.083+0000 I CONTROL [initandlisten] target_arch: x86_64
mongo_1 | 2017-01-03T10:20:35.083+0000 I CONTROL [initandlisten] options: {}
mongo_1 | 2017-01-03T10:20:35.104+0000 I - [initandlisten] Detected data files in /data/db created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
mongo_1 | 2017-01-03T10:20:35.104+0000 I STORAGE [initandlisten]
mongo_1 | 2017-01-03T10:20:35.104+0000 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
mongo_1 | 2017-01-03T10:20:35.104+0000 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem
mongo_1 | 2017-01-03T10:20:35.104+0000 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=1454M,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
mongo_1 | 2017-01-03T10:20:36.385+0000 I CONTROL [initandlisten]
mongo_1 | 2017-01-03T10:20:36.385+0000 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
mongo_1 | 2017-01-03T10:20:36.385+0000 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
mongo_1 | 2017-01-03T10:20:36.385+0000 I CONTROL [initandlisten]
mongo_1 | 2017-01-03T10:20:36.385+0000 I CONTROL [initandlisten]
mongo_1 | 2017-01-03T10:20:36.385+0000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
mongo_1 | 2017-01-03T10:20:36.385+0000 I CONTROL [initandlisten] ** We suggest setting it to 'never'
mongo_1 | 2017-01-03T10:20:36.385+0000 I CONTROL [initandlisten]
mongo_1 | 2017-01-03T10:20:36.385+0000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
mongo_1 | 2017-01-03T10:20:36.385+0000 I CONTROL [initandlisten] ** We suggest setting it to 'never'
mongo_1 | 2017-01-03T10:20:36.385+0000 I CONTROL [initandlisten]
mongo_1 | 2017-01-03T10:20:36.389+0000 I FTDC [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data'
mongo_1 | 2017-01-03T10:20:36.390+0000 I NETWORK [thread1] waiting for connections on port 27017
web_1 |
web_1 | > [email protected] start /opt/app
web_1 | > node ./bin/www
編輯2:
甲新呃ROR更改端口爲 「27018:27017」 後,下面當我在GET http://localhost:3000/data/from/db或POST http://localhost:3000/data/into/db:
failed to connect to server [mongo:27017] on first connect
MongoError: failed to connect to server [mongo:27017] on first connect
at Pool.<anonymous> (/opt/app/node_modules/mongodb-core/lib/topologies/server.js:325:35)
at emitOne (events.js:96:13)
at Pool.emit (events.js:188:7)
at Connection.<anonymous> (/opt/app/node_modules/mongodb-core/lib/connection/pool.js:270:12)
at Connection.g (events.js:292:16)
at emitTwo (events.js:106:13)
at Connection.emit (events.js:191:7)
at Socket.<anonymous> (/opt/app/node_modules/mongodb-core/lib/connection/connection.js:173:49)
at Socket.g (events.js:292:16)
at emitOne (events.js:96:13)
任何想法,爲什麼?
我thnk你是對的 - 見上面我的編輯。我不知道這些線路真的想說什麼。但是我可以看到Docker在RoboMongo下創建的數據庫。有任何想法嗎? – laukok
我可以問 - 「27018:27017」中提到的27018和27017是什麼? – laukok
https://docs.docker.com/compose/compose-file/#/ports解釋了第一個數字是要在主機上轉發的端口,第二個數字是將其轉發到容器上的端口。就Docker而言,他們不必有所不同,但在你的情況下,主機已經在使用27017,所以你必須改變它。該鏈接提供了更多信息。 –