Ich folgte diesem Artikel auf Running a Rails Development Environment in Docker. Guter Artikel, funktioniert super. Nachdem ich alles eingerichtet hatte, beschloss ich, eine Produktionsumgebung einzurichten.Docker Compose + Rails: Best Practice für die Migration?
ZIEL:
Ich möchte rake db:create && rake db:migrate
jedes Mal mein Docker Bild ausgeführt wird.
PROBLEM:
Wenn ich die Datenbankerstellung und Migrationen Schritten bewegen ...
docker-compose run app rake db:create
docker-compose run app rake db:migrate
... in die Dockerfile ...
RUN rake db:create && rake db:migrate
... das wird einen Fehler werfen ...
could not translate host name "postgres" to address: Name or service not known
... weil die host
in meinem database.yml
...
default: &default
adapter: postgresql
encoding: unicode
pool: 5
timeout: 5000
username: postgres
host: postgres
port: 5432
development:
<<: *default
database: rails_five_development
... ist mit dem postgres
Service-Namen in meinem docker-compose.yml
...
version: "2"
services:
postgres:
image: postgres:9.5
ports:
- "5432"
app:
build: .
command: rails server -p 3000 -b '0.0.0.0'
volumes:
- .:/app
ports:
- "3000:3000"
links:
- postgres
... angegeben gesetzt, da Das ist die empfohlene Vorgehensweise, auf die der Artikel hinweist.
FRAGE:
Wie kann ich rake db:create && rake db:migrate
automatisch jedes Mal, wenn mein Docker Bild ausgeführt wird?
I am trying to achieve the same thing as in this question
Wie entkommen Sie dem Doppelpunkt? Ich erhalte die folgende 'make: *** Keine Regel, um das Ziel 'create' zu machen, benötigt von 'run'. Stop.' –
Sie sollten sich keine Gedanken darüber machen müssen, irgendwelche Doppelpunkte zu umgehen, wenn Sie das Makefile korrekt formatieren. versuche, alles auf eine Zeile zu setzen 'docker-compose up -d && docker-compose renne den Web-Rake db: create' und stelle sicher, dass Tabs (^ I) und keine Leerzeichen verwendet werden – davidpm4