Compose: rakeのDockerfileでリンクが機能しない

作成日 2015年11月04日  ·  3コメント  ·  ソース: docker/compose

現在、dockercomposeを使用してWebアプリを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

Dockerfileでrake db:create ...を実行せず、このdocker-compose run web rake db:createように実行すると、正常に動作し、エラーは発生しません。 手伝って頂けますか?

kinquestion

最も参考になるコメント

はい、ビルドフェーズではリンクは利用できません。 ビルド中にフィクスチャをインストールする方法はいくつかありますが、どれも本当に簡単な方法ではありません。

  • データベース用に新しいDockerfileを作成し、すべてのプロジェクトソースとrubyの依存関係を追加し、イメージビルドの一部としてrake db:createを実行できます。
  • データベースイメージのエントリポイントスクリプトの一部としてrake db:createを実行できます(私は好きではないので、あまりお勧めしません)
  • ビルドから除外して、環境をセットアップする際の手動の手順にすることができます(これもファンではありませんが、最も簡単なオプションであり、サンプルドキュメントhttp://docs.docker.com/composeで使用しています。 / rails /)
  • データのSQLダンプを作成するために使用できる一時環境を開始するマルチステップビルドを作成し、それをデータベースイメージに含めます。 そのための優れたツールはまだありませんが、 https://github.com/dnephin/buildpipeで何かに取り組んでい

全てのコメント3件

はい、ビルドフェーズではリンクは利用できません。 ビルド中にフィクスチャをインストールする方法はいくつかありますが、どれも本当に簡単な方法ではありません。

  • データベース用に新しいDockerfileを作成し、すべてのプロジェクトソースとrubyの依存関係を追加し、イメージビルドの一部としてrake db:createを実行できます。
  • データベースイメージのエントリポイントスクリプトの一部としてrake db:createを実行できます(私は好きではないので、あまりお勧めしません)
  • ビルドから除外して、環境をセットアップする際の手動の手順にすることができます(これもファンではありませんが、最も簡単なオプションであり、サンプルドキュメントhttp://docs.docker.com/composeで使用しています。 / rails /)
  • データのSQLダンプを作成するために使用できる一時環境を開始するマルチステップビルドを作成し、それをデータベースイメージに含めます。 そのための優れたツールはまだありませんが、 https://github.com/dnephin/buildpipeで何かに取り組んでい

かっこいい! :+1:まず、長い説明をありがとうございます! 手動の手順として実行します。今のところこれで十分です。 後で私はさらなるステップについて考えることができました!

@dazorni解決する手順を更新してください。 私はこれに入り、発見しようとしました。 再現するのは難しいと思いますが、見せていただければ幸いです:)。

このページは役に立ちましたか?
0 / 5 - 0 評価