web-dev-qa-db-ja.com

docker-composeを使用してmongodbに接続する方法は?

docker-compose.yml

mongo:
  image: tutum/mongodb
  environment:
    - AUTH=no
  volumes:
    - /Users/andrey/docker/mongodb:/mongo/db
  ports:
    - "27017:27017"
parser:
  image: nazandr/goparser

およびDockerfile goparser

FROM golang:1.8

WORKDIR /app

ADD parser.go /app/
    RUN go get github.com/PuerkitoBio/goquery; go get gopkg.in/mgo.v2; go build -o parser

ENTRYPOINT ["./parser"]

Mongoを接続するために使用する必要があるアドレス

16
Andrey

以下のようなことができます:

version: '3'

services:
  mongo:
    image: 'mongo:3.4.1'
    ports:
      - '27017:27017'
    volumes:
      - 'mongo:/data/db'

  puma:
    tty: true
    stdin_open: true
    depends_on:
      - 'mongo'
    build:
      context: .
      dockerfile: Dockerfile.puma
    command: bundle exec Rails s -p 3000 -b '0.0.0.0'
    ports:
      - '3000:3000'
    volumes:
      - '.:/app'
    environment:
      - SECRET_KEY_BASE=secret
      - MONGO_URL=mongodb://mongo:27017/app_development
volumes:
  mongo:

お気づきかもしれませんが、docker-compose.ymlなどの接続文字列を使用して、同じmongodb://mongo:27017ファイルにある他のコンテナーからmongoコンテナーで実行されているmongoサービスに接続できます。

ホストから接続する場合、上記のようにmongoポートを公開していれば、mongodb://localhost:27017を使用できます。

23
Ashish Bista