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?
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:
Dockerfile
für die Datenbank erstellen, alle Projektquellen- und Ruby-Abhängigkeiten hinzufügen und rake db:create
als Teil des Image-Builds ausführenrake db:create
als Teil des Einstiegspunktskripts eines Datenbankabbilds ausführen (etwas, von dem ich kein Fan bin und das ich nicht wirklich empfehle).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 :).
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:
Dockerfile
für die Datenbank erstellen, alle Projektquellen- und Ruby-Abhängigkeiten hinzufügen undrake db:create
als Teil des Image-Builds ausführenrake db:create
als Teil des Einstiegspunktskripts eines Datenbankabbilds ausführen (etwas, von dem ich kein Fan bin und das ich nicht wirklich empfehle).