Wie kann ich auf die Mongo-Datenbank zugreifen, die von Docker mit RoboMongo oder ähnlichem erstellt wurde?Docker + MongoDB: Wie Datenbank mit RoboMongo anzeigen?
Bevor ich Doncker benutze, habe ich schon mongodb in meinen Linux-Rechner installiert. Also kann ich den Port "27017: 27017" nicht in der docker-compse.yml verwenden. Ich benutze "27018: 27018":
version: "2"
services:
web:
build: .
ports:
- "3000:3000"
links:
- mongo
mongo:
image: mongo
volumes:
- /data/mongodb/db:/data/db
ports:
- "27018:27018"
Ich kann RoboMongo verwenden, um alle Datenbanken anzuzeigen, die ich in meinem Pre-Docker Mongo geschaffen. Aber wie kann ich auf den Docker zugreifen?
Das ist mein 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"]
EDIT:
Wenn ich laufen die Docker auf meinem Terminal:
$ 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
EDIT 2:
A neu er ror unten nach dem Port Wechsel zu "27018: 27017", wenn ich bin auf GET oder POST http://localhost:3000/data/from/dbhttp://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)
Irgendwelche Ideen, warum?
I thnk Sie richtig sind - siehe meine bearbeiten oben. Ich weiß nicht, was diese Zeilen wirklich zu sagen versuchen. Aber ich kann die mit Docker erstellte Datenbank trotzdem mit RoboMongo sehen. Irgendwelche Ideen? – laukok
kann ich fragen - was bedeuten 27018 und 27017 in '27018: 27017'? – laukok
https://docs.docker.com/compose/compose-file/#/ports erklärt, dass die erste Nummer der Port ist, der auf dem Host weitergeleitet wird, und der zweite der Port ist, an den der Container weitergeleitet werden soll. Sie müssen nicht anders sein, was Docker betrifft, aber in Ihrem Fall verwendet der Host bereits 27017, also mussten Sie ihn ändern. Dieser Link bietet weitere Informationen. –