В настоящее время я использую docker compose для подключения моего веб-приложения к базе данных postgre. Моя конфигурация выглядит так:
# 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
Если я запускаю docker-compose up
я получаю эту ошибку
could not translate host name "db" to address: Name or service not known
Если я не запустил rake db:create ...
в Dockerfile и запустил его так docker-compose run web rake db:create
он работает нормально, и я не получаю никаких ошибок. Вы можете мне помочь?
Да, ссылки недоступны на этапе сборки. Есть несколько способов установить ваши светильники во время сборки, но ни один из них не является на самом деле простым:
Dockerfile
для базы данных, добавить все исходные коды проекта и зависимости ruby и запустить rake db:create
как часть сборки образаrake db:create
как часть сценария точки входа образа базы данных (то, что я не фанат и не очень рекомендую)Хорошо! : +1: Во-первых, спасибо за подробное описание! Я запущу его вручную, на данный момент этого должно быть достаточно. Позже я мог подумать о дальнейших шагах!
@dazorni Не могли бы вы обновить шаги для решения. Я влез в это и пытаюсь выяснить. Я знаю, что это сложно воспроизвести, но очень ценю, если можно показать :).
Самый полезный комментарий
Да, ссылки недоступны на этапе сборки. Есть несколько способов установить ваши светильники во время сборки, но ни один из них не является на самом деле простым:
Dockerfile
для базы данных, добавить все исходные коды проекта и зависимости ruby и запуститьrake db:create
как часть сборки образаrake db:create
как часть сценария точки входа образа базы данных (то, что я не фанат и не очень рекомендую)