未熟学生エンジニアのブログ

TetsuFeの個人開発ブログ

TetsuFeはテツエフイー と読みます。FlutterやWeb周り全般、チーム開発について語るブログ

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"})