簡體   English   中英

mongodb連接拒絕了docker-compose

[英]mongodb connection refused 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”時,每個東西都正確構建,當我做“docker-compose up”時,應用程序啟動,我就可以訪問在vm主機上的air_scout容器中運行的應用程序,但是在db access app上。 頁面我收到錯誤:

“air_scout_1 | [fe9cdec8-36e4-4974-aef3-18b1e73ea030] [DEBUG] MONGODB |連接被拒絕 - 連接(2)為127.0.0.1:27017”。

在我的mongoid.yml文件中,我做了如下配置:

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

究竟是什么問題,我從昨天開始就真的很開心。 謝謝。

執行“docker inspect CID”會給出jwson數據,其中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容器創建/ etc / hosts條目。 鏈接的服務可以在這些名稱下訪問。

請參閱https://docs.docker.com/compose/compose-file/#/links

您使用正確的值mongodb:27017設置環境變量DATABASE_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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM