2
votes

Comment se connecter à Mongo dans un conteneur Docker en utilisant pymongo?

J'ai extrait l'image officielle mongo du site Web de Docker et j'ai démarré un conteneur mongo nommé dataiomongo .

Je veux maintenant me connecter au mongodb à l'intérieur du conteneur en utilisant pymongo.

Voici le script python que j'ai écrit:

Traceback (most recent call last):
  File "D:/dataio/test_mongo.py", line 8, in <module>
    server = db.command("serverStatus")
  File "D:\dataio\venv\lib\site-packages\pymongo\database.py", line 655, in command
    read_preference) as (sock_info, slave_ok):
  File "C:\Python27\Lib\contextlib.py", line 17, in __enter__
    return self.gen.next()
  File "D:\dataio\venv\lib\site-packages\pymongo\mongo_client.py", line 1135, in _socket_for_reads
    server = topology.select_server(read_preference)
  File "D:\dataio\venv\lib\site-packages\pymongo\topology.py", line 226, in select_server
    address))
  File "D:\dataio\venv\lib\site-packages\pymongo\topology.py", line 184, in select_servers
    selector, server_timeout, address)
  File "D:\dataio\venv\lib\site-packages\pymongo\topology.py", line 200, in _select_servers_loop
    self._error_message(selector))
pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 10061] No connection could be made because the target machine actively refused it

L'erreur qui est survenue est:

from pprint import pprint
from pymongo import MongoClient

client = MongoClient('localhost', port=27017)

db = client.admin

server = db.command("serverStatus")
pprint(server)

Comment puis-je me connecter au mongodb dans le conteneur du docker?


1 commentaires

comment avez-vous géré le conteneur mongo?


3 Réponses :


0
votes

Assurez-vous de lier le port de conteneur 27017 au port hôte via -p 27017: 27017 flag.


0 commentaires

4
votes

lancez mongo

Vous devez d'abord exécuter mongo

client = MongoClient()
client.server_info()
db = client.yourdbname

en tant que démon

Insert the data into the db

connectez-vous au conteneur précédent .. avec un autre conteneur

$ docker run -it --link my-mongo:mongo --rm mongo:latest sh -c 'exec mongo "$MONGO_PORT_27017_TCP_ADDR:$MONGO_PORT_27017_TCP_PORT/test"'

Insérer des données dans db

$ docker run --name my-mongo -d mongo:latest

Connecter db avec python

XXX


1 commentaires

Existe-t-il un équivalent simple pour encapsuler les commandes docker dans un simple fichier docker-compose?



0
votes

Je pense que vous manquez l'indicateur -p 27017: 27017 . docker run -p 27017: 27017 --name mymongo -d mongo .


0 commentaires