Atualmente, estou usando o docker compose para conectar meu aplicativo da web ao banco de dados postgre. Minha configuração é assim:
# 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
Se eu executar docker-compose up
recebo este erro
could not translate host name "db" to address: Name or service not known
Se eu não executar rake db:create ...
no Dockerfile e executá-lo assim docker-compose run web rake db:create
ele funciona bem e não recebo nenhum erro. Pode me ajudar?
Sim, os links não estão disponíveis durante a fase de construção. Existem algumas maneiras de fazer com que seus acessórios sejam instalados durante a construção, mas nenhuma delas é realmente simples:
Dockerfile
para o banco de dados, adicionar todas as fontes do projeto e dependências de ruby e executar rake db:create
como parte da construção da imagemrake db:create
como parte do script do ponto de entrada de uma imagem de banco de dados (algo de que não sou fã e não recomendo)OK fixe! : +1: Primeiro, obrigado por sua longa descrição! Vou executá-lo como uma etapa manual, isso deve ser suficiente por enquanto. Mais tarde, poderia pensar em outras etapas!
@dazorni Você poderia atualizar as etapas para resolver. Entrei nisso e tento descobrir. Eu sei que é difícil de reproduzir, mas agradeço muito se você puder mostrar :).
Comentários muito úteis
Sim, os links não estão disponíveis durante a fase de construção. Existem algumas maneiras de fazer com que seus acessórios sejam instalados durante a construção, mas nenhuma delas é realmente simples:
Dockerfile
para o banco de dados, adicionar todas as fontes do projeto e dependências de ruby e executarrake db:create
como parte da construção da imagemrake db:create
como parte do script do ponto de entrada de uma imagem de banco de dados (algo de que não sou fã e não recomendo)