mongodb连接拒绝docker-compose

dockerfile组成如下:

FROM ruby:2.2.3-slim MAINTAINER Milan Rawal <milan@gmail.com> RUN apt-get update && apt-get install -qq -y build-essential nodejs libmagickcore-dev imagemagick libmagickwand-dev libxml2-dev libxslt1-dev git-core curl htop --fix-missing --no-install-recommends ENV INSTALL_PATH /air_scout RUN mkdir -p $INSTALL_PATH WORKDIR $INSTALL_PATH COPY Gemfile Gemfile RUN bundle install COPY . . RUN bundle exec rake RAILS_ENV=production SECRET_TOKEN=f6801f0744ff2e86b0baa542fc55075b5b79c922c518e34484cfe6a6c2149510973fa6c90d36c05907f8bf9114b6b33594f3630810b332ef3717b8b8f4f04b1f assets:precompile VOLUME ["$INSTALL_PATH/public"] CMD bundle exec unicorn -c config/unicorn.rb 

docker-compose.yml文件包含:

 version: '2' services: mongodb: image: mongo:latest ports: - '27017:27017' volumes: - air_scout-mongodb:/data/db redis: image: redis:3.0.5 ports: - '6379:6379' volumes: - air_scout-redis:/var/lib/redis air_scout: build: . ports: - '8000:8000' environment: - DATABASE_URL=mongodb:27017 links: - mongodb - redis env_file: - .air_scout.env resque: build: . environment: - QUEUE=* - DATABASE_URL=mongodb:27017 links: - mongodb - redis command: bundle exec rake environment resque:work env_file: - .air_scout.env volumes: air_scout-redis: air_scout-mongodb: 

当我做“docker-compose build”的时候,每一件事情都可以正确地构build,当我做“docker-compose up”的时候,应用就会启动,我可以访问在vm主机上的air_scout容器中运行的应用,但是在db访问应用上。 页面错误:

“air_scout_1 | [fe9cdec8-36e4-4974-aef3-18b1e73ea030] [DEBUG] MONGODB |拒绝连接 – 连接(2)为127.0.0.1:27017”。

在我的mongoid.yml文件中,我configuration如下:

 hosts: - localhost:27017 - <%= ENV['DATABASE_URL'] %> 

究竟是什么问题,自昨天以来,我真的很震惊。 谢谢。

做“docker检查CID”给出的JSON数据,其中Networsetting下的Ipaddress是“空”的。 我怎样才能访问这个空的IP。

编辑: – 在mongoid.yml文件中的内容是: –

 production: clients: default: database: air_scout_test hosts: - localhost:27017 - <%= ENV['DATABASE_URL'] %> options: max_pool_size: 1 options: raise_not_found_error: false 

您必须从air_scout容器连接到mongodb:27017而不是127.0.0.1:27017。

air_scout容器的链接将为redis和mongodb容器创build/ etc / hosts条目。 链接的服务将以这些名称可访问。

请参阅https://docs.docker.com/compose/compose-file/#/links

您可以使用正确的值mongodb:27017设置环境variablesDATABASE_URL,但错误消息仍包含127.0.0.1:27017。 所以它试图连接那里而不是mongodb:27017。 我没有mongoid的经验,但我猜你应该离开与DATABASE_URL行。 如果这不起作用,请使用mongodb:27017

如果你想看看到底发生了什么,docker exec到你正在运行的air_scout容器中

 docker ps # take the exact name of the air_scout container in the output # i am guessing compose_air_scout but i might be off docker exec -ti compose_air_scout /bin/bash cat /etc/hosts ping mongodb # maybe try an interactive mongodb client