Compose: Ссылка не работает в Dockerfile для граблей

Созданный на 4 нояб. 2015  ·  3Комментарии  ·  Источник: docker/compose

В настоящее время я использую 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 он работает нормально, и я не получаю никаких ошибок. Вы можете мне помочь?

kinquestion

Самый полезный комментарий

Да, ссылки недоступны на этапе сборки. Есть несколько способов установить ваши светильники во время сборки, но ни один из них не является на самом деле простым:

  • вы можете создать новый Dockerfile для базы данных, добавить все исходные коды проекта и зависимости ruby ​​и запустить rake db:create как часть сборки образа
  • вы можете запустить rake db:create как часть сценария точки входа образа базы данных (то, что я не фанат и не очень рекомендую)
  • вы можете исключить его из сборки и сделать это вручную при настройке среды (тоже не фанат, но это самый простой вариант, и то, что мы используем в примерах документов http://docs.docker.com/compose / рельсы /)
  • создайте многоэтапную сборку, которая запускает временную среду, которую вы можете использовать для создания дампа данных sql и включать его в образ базы данных. Для этого пока нет хороших инструментов, но я над чем-то работаю в https://github.com/dnephin/buildpipe. Для него пока нет документации, поэтому вы, вероятно, не захотите его использовать.

Все 3 Комментарий

Да, ссылки недоступны на этапе сборки. Есть несколько способов установить ваши светильники во время сборки, но ни один из них не является на самом деле простым:

  • вы можете создать новый Dockerfile для базы данных, добавить все исходные коды проекта и зависимости ruby ​​и запустить rake db:create как часть сборки образа
  • вы можете запустить rake db:create как часть сценария точки входа образа базы данных (то, что я не фанат и не очень рекомендую)
  • вы можете исключить его из сборки и сделать это вручную при настройке среды (тоже не фанат, но это самый простой вариант, и то, что мы используем в примерах документов http://docs.docker.com/compose / рельсы /)
  • создайте многоэтапную сборку, которая запускает временную среду, которую вы можете использовать для создания дампа данных sql и включать его в образ базы данных. Для этого пока нет хороших инструментов, но я над чем-то работаю в https://github.com/dnephin/buildpipe. Для него пока нет документации, поэтому вы, вероятно, не захотите его использовать.

Хорошо! : +1: Во-первых, спасибо за подробное описание! Я запущу его вручную, на данный момент этого должно быть достаточно. Позже я мог подумать о дальнейших шагах!

@dazorni Не могли бы вы обновить шаги для решения. Я влез в это и пытаюсь выяснить. Я знаю, что это сложно воспроизвести, но очень ценю, если можно показать :).

Была ли эта страница полезной?
0 / 5 - 0 рейтинги