pymongoでdocker上のmongodbにアクセスするときのホスト名設定
はじめに
docker上でmongodbを起動して、pymongoからアクセスする設定に苦労したので備忘録的に記述例を書いておきます。
ポイント
pymongoを使う時、
client = MongoClient('ホスト名', ポート番号)
のような文を書くと思うが、このホスト名をdocker-composeで指定したサービス名と同じにする必要がある。
例
version: '2' services: dev: build: ./dev links: - mongo volumes: - ./dev:/dev mongo: image: mongo:3.6.3 volumes_from: - datastore ports: - "27017:27017" command: --smallfiles datastore: build: ./datastore
# coding: utf-8 DATABASE_NAME = 'test_database' COLLECTION_NAME = 'test_collection' from pymongo import MongoClient # ダメな例 # client = MongoClient('localhost', 27017) # 良い例:ホスト名をdocker-composeのサービス名と合わせよう client = MongoClient('mongo', 27017) db = client[DATABASE_NAME] collection = db[COLLECTION_NAME] result = collection.insert_one({"id":1,"name": "tetsufe"})