2017-04-01 108 views
3

搬運工,compose.yml如何使用docker-compose連接到mongodb?

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"] 

什麼地址需要使用連接蒙戈

+0

鏈接服務的容器將可以在與別名相同的主機名上訪問,或者如果未指定別名,則可以訪問服務名稱。因此,鏈接容器,並使用服務名稱作爲主機名訪問mongodb。您可以在自動創建的鏈接容器中檢查/ etc/hosts文件。 –

+0

你可以粘貼你的整個docker-compose.yml文件嗎? –

回答

6

你可以這樣做如下:

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: 

正如你可能已經注意到的,你可以連接到mongo服務runnin g來自位於同一docker-compose.yml文件中的其他容器的mongo容器,連接字符串類似於mongodb://mongo:27017

如果你想從主機連接,你可以使用mongodb://localhost:27017,如果你已經暴露了mongo端口,如上所示。