現在、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
ように実行すると、正常に動作し、エラーは発生しません。 手伝って頂けますか?
はい、ビルドフェーズではリンクは利用できません。 ビルド中にフィクスチャをインストールする方法はいくつかありますが、どれも本当に簡単な方法ではありません。
Dockerfile
を作成し、すべてのプロジェクトソースとrubyの依存関係を追加し、イメージビルドの一部としてrake db:create
を実行できます。rake db:create
を実行できます(私は好きではないので、あまりお勧めしません)かっこいい! :+1:まず、長い説明をありがとうございます! 手動の手順として実行します。今のところこれで十分です。 後で私はさらなるステップについて考えることができました!
@dazorni解決する手順を更新してください。 私はこれに入り、発見しようとしました。 再現するのは難しいと思いますが、見せていただければ幸いです:)。
最も参考になるコメント
はい、ビルドフェーズではリンクは利用できません。 ビルド中にフィクスチャをインストールする方法はいくつかありますが、どれも本当に簡単な方法ではありません。
Dockerfile
を作成し、すべてのプロジェクトソースとrubyの依存関係を追加し、イメージビルドの一部としてrake db:create
を実行できます。rake db:create
を実行できます(私は好きではないので、あまりお勧めしません)