Actualmente estoy usando docker compose para conectar mi aplicación web con la base de datos de postgre. Mi configuración se ve así:
# 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
Si ejecuto docker-compose up
obtengo este error
could not translate host name "db" to address: Name or service not known
Si no ejecuto rake db:create ...
en el Dockerfile y lo ejecuto así docker-compose run web rake db:create
, funciona bien y no obtengo ningún error. ¿Me puedes ayudar?
Sí, los enlaces no están disponibles durante la fase de construcción. Hay algunas formas de instalar sus accesorios durante la compilación, pero ninguna de ellas es realmente sencilla:
Dockerfile
para la base de datos, agregar toda la fuente del proyecto y las dependencias de ruby, y ejecutar rake db:create
como parte de la construcción de la imagenrake db:create
como parte del script de punto de entrada de una imagen de base de datos (algo de lo que no soy fan y no recomiendo)¡Está bien, genial! : +1: Primero, ¡gracias por su larga descripción! Lo ejecutaré como un paso manual, esto debería ser suficiente por ahora. ¡Más tarde podría pensar en otros pasos!
@dazorni ¿Podría actualizar los pasos para resolverlo? Me metí en esto y trato de descubrirlo. Sé que es difícil de reproducir, pero agradezco mucho si puedes mostrar :).
Comentario más útil
Sí, los enlaces no están disponibles durante la fase de construcción. Hay algunas formas de instalar sus accesorios durante la compilación, pero ninguna de ellas es realmente sencilla:
Dockerfile
para la base de datos, agregar toda la fuente del proyecto y las dependencias de ruby, y ejecutarrake db:create
como parte de la construcción de la imagenrake db:create
como parte del script de punto de entrada de una imagen de base de datos (algo de lo que no soy fan y no recomiendo)