2016-07-05 10 views
3

Die dockerfile besteht wie: -mongodb Verbindung abgelehnt Docker-komponieren

FROM ruby:2.2.3-slim 

MAINTAINER Milan Rawal <[email protected]> 

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 

Und die Docker-compose.yml Datei enthält wie: -

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: 

Als ich "Docker-compose build" tun Jedes Ding baut sich richtig auf und wenn ich "docker-compose up" mache, bootet die App und ich kann auf die App zugreifen, die im air_scout Container auf dem vm Host läuft, aber auf der db access app. Seite bekomme ich Fehler als:

"air_scout_1 | [fe9cdec8-36e4-4974-aef3-18b1e73ea030] [DEBUG] MONGODB | Verbindung verweigert - connect (2) für 127.0.0.1:27017".

In meiner mongoid.yml Datei ich Config wie unten tat haben:

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

Was das Problem tatsächlich ist, bin hämmern ich seit gestern meinen Kopf wirklich. Vielen Dank.

Doing "Docker inspect CID" gibt die JSON-Daten, in denen die IPaddress unter Networsetting ist leer. Wie kann ich auf diese leere IP zugreifen?

EDIT: - Inhalte in mongoid.yml Datei ist als: -

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

Antwort

4

Sie müssen MongoDB verbinden: 27017 statt 127.0.0.1:27017 von Ihrem air_scout Container.

Die Links für den air_scout Container werden/etc/hosts Einträge für die redis und mongodb Container erstellen. Die verknüpften Dienste sind unter diesen Namen erreichbar.

Siehe https://docs.docker.com/compose/compose-file/#/links

Sie eine Umgebungsvariable DATABASE_URL mit dem richtigen Wert mongodb gesetzt haben: 27017, aber die Fehlermeldung enthält noch 127.0.0.1:27017. Also versucht es dort statt mongodb zu verbinden: 27017. Ich habe keine Erfahrung mit Mongoid, aber ich vermute, Sie sollten nur die Zeile mit DATABASE_URL verlassen. Wenn das nicht funktioniert, verwenden Sie mongodb: 27017

Wenn Sie möchten, um zu sehen, was vor sich geht, Docker exec in Ihren laufenden air_scout Behälter

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 
+0

kein Glück gleichen Debug-Fehlermeldung bekommen, wie erwähnt. Aber wenn ich an mongodb ping bekomme ich als: - 64 Bytes von 172.18.0.3: icmp_seq = 14 ttl = 64 Zeit = 0.161 ms. Irgendwelche Ideen. – codemilan

+0

Meine Vermutung ist, dass etwas mit Ihrem mongoid.yml nicht stimmt - vielleicht ein Tippfehler im Pfad zur Konfiguration Ihres Hosts, daher wird der Standardwert localhost verwendet. Kannst du das Ganze in deine Frage bringen? –

+0

vielen Dank für schnelle Antwort @Juergen Gmeiner, ich habe die Frage für mongoid.yml Datei bearbeitet. – codemilan