Ho appena seguito questo articolo su Running a Rails Development Environment in Docker. Il buon articolo, funziona alla grande. Dopo aver impostato tutto, ho deciso di andare avanti e impostare un ambiente di produzione.Docker Compose + Rails: best practice per migrare?
OBIETTIVO:
voglio rake db:create && rake db:migrate
ogni volta che si esegue la mia immagine finestra mobile.
PROBLEMA:
Se mi muovo i passi di creazione e migrazioni database ...
docker-compose run app rake db:create
docker-compose run app rake db:migrate
... nel Dockerfile ...
RUN rake db:create && rake db:migrate
... che genererà un errore ...
could not translate host name "postgres" to address: Name or service not known
... perché il host
nel mio database.yml
...
default: &default
adapter: postgresql
encoding: unicode
pool: 5
timeout: 5000
username: postgres
host: postgres
port: 5432
development:
<<: *default
database: rails_five_development
... è impostato sul nome postgres
servizio specificato nel mio 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
... dal questa è la pratica raccomandata come indicato dall'articolo.
DOMANDA:
Come posso automaticamente rake db:create && rake db:migrate
ogni volta che la mia immagine finestra mobile è gestito?
I am trying to achieve the same thing as in this question
come fai a fuggire dal colon? Prendo il seguente 'make: *** Nessuna regola per rendere il target 'create', necessario per 'eseguire'. Fermati! –
non dovresti aver bisogno di preoccuparti di sfuggire a qualsiasi punto se si formatta correttamente il Makefile. prova a mettere tutto su una riga 'docker-componi up -d && docker-componi eseguire web rake db: create' e assicurati di utilizzare le schede (^ I) e non gli spazi – davidpm4