Compose: Link funktioniert in Dockerfile für Rake nicht

Erstellt am 4. Nov. 2015  ·  3Kommentare  ·  Quelle: docker/compose

Derzeit verwende ich Docker Compose, um meine Web-App mit der Postgre-Datenbank zu verbinden. Meine Konfiguration sieht folgendermaßen aus:

# Dockerfile

FROM rails:onbuild
RUN rake db:create db:migrate db:seed
# config/database.yml

# SQLite version 3.x
#   gem install sqlite3
#
#   Ensure the SQLite 3 gem is defined in your Gemfile
#   gem 'sqlite3'
#
default: &default
    adapter: postgresql
    encoding: utf8
    database: rezeptr_prod
    pool: 5
    username: postgres
    password:
    host: db

development:
  <<: *default
  database: rezeptr_dev

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  <<: *default
  database: rezeptr_test
# docker-compose.yml

db:
  image: postgres
web:
  build: .
  volumes:
    - .:/usr/src/app
  ports:
    - "3000:3000"
  links:
    - db:db

Wenn ich docker-compose up starte, erhalte ich diesen Fehler

could not translate host name "db" to address: Name or service not known

Wenn ich nicht rake db:create ... in der Docker-Datei laufen lasse und es so ausführe docker-compose run web rake db:create , funktioniert es gut und ich bekomme keine Fehler. Kannst du mir helfen?

kinquestion

Hilfreichster Kommentar

Ja, während der Erstellungsphase sind keine Links verfügbar. Es gibt einige Möglichkeiten, Ihre Fixtures während des Builds zu installieren, aber keine davon ist wirklich einfach:

  • Sie können ein neues Dockerfile für die Datenbank erstellen, alle Projektquellen- und Ruby-Abhängigkeiten hinzufügen und rake db:create als Teil des Image-Builds ausführen
  • Sie können rake db:create als Teil des Einstiegspunktskripts eines Datenbankabbilds ausführen (etwas, von dem ich kein Fan bin und das ich nicht wirklich empfehle).
  • Sie können es vom Build ausschließen und es zu einem manuellen Schritt beim Einrichten der Umgebung machen (auch kein Lüfter, aber es ist die einfachste Option und was wir in den Beispieldokumenten http://docs.docker.com/compose verwenden /Schienen/)
  • Erstellen Sie einen mehrstufigen Build, der eine temporäre Umgebung startet, mit der Sie einen SQL-Speicherauszug der Daten erstellen können, und fügen Sie diesen in das Datenbankabbild ein. Dafür gibt es noch keine großartigen Werkzeuge, aber ich arbeite an etwas in https://github.com/dnephin/buildpipe. Es gibt noch keine Dokumente dafür, daher möchten Sie es wahrscheinlich nicht verwenden.

Alle 3 Kommentare

Ja, während der Erstellungsphase sind keine Links verfügbar. Es gibt einige Möglichkeiten, Ihre Fixtures während des Builds zu installieren, aber keine davon ist wirklich einfach:

  • Sie können ein neues Dockerfile für die Datenbank erstellen, alle Projektquellen- und Ruby-Abhängigkeiten hinzufügen und rake db:create als Teil des Image-Builds ausführen
  • Sie können rake db:create als Teil des Einstiegspunktskripts eines Datenbankabbilds ausführen (etwas, von dem ich kein Fan bin und das ich nicht wirklich empfehle).
  • Sie können es vom Build ausschließen und es zu einem manuellen Schritt beim Einrichten der Umgebung machen (auch kein Lüfter, aber es ist die einfachste Option und was wir in den Beispieldokumenten http://docs.docker.com/compose verwenden /Schienen/)
  • Erstellen Sie einen mehrstufigen Build, der eine temporäre Umgebung startet, mit der Sie einen SQL-Speicherauszug der Daten erstellen können, und fügen Sie diesen in das Datenbankabbild ein. Dafür gibt es noch keine großartigen Werkzeuge, aber ich arbeite an etwas in https://github.com/dnephin/buildpipe. Es gibt noch keine Dokumente dafür, daher möchten Sie es wahrscheinlich nicht verwenden.

Okay cool! : +1: Zuerst danke für deine lange Beschreibung! Ich werde es als manuellen Schritt ausführen, dies sollte vorerst ausreichen. Später könnte ich über weitere Schritte nachdenken!

@dazorni Könnten Sie bitte die zu lösenden Schritte aktualisieren. Ich bin darauf gekommen und versuche es zu entdecken. Ich weiß, dass es schwierig zu reproduzieren ist, aber ich weiß es wirklich zu schätzen, wenn Sie es zeigen können :).

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen