2016-12-10 9 views
1

Dockerを使用して実行しようとしている単純なRailsアプリケーションがあります。私はdocker-compose upを実行すると実行されますが、ページをロードすると、dbが存在しないことがわかります。私がdocker-compose run app rails db:createを実行しても、dbはすでに存在していると言われます。docker-compose railsアプリケーションは、使用中にデータベースを見つけられませんが、実行時には見つかりません

ドッキングウィンドウ-compose.yml

version: '2' 

services: 
    db: 
    image: postgres 
    app: 
    build: ./rails 
    command: bundle exec rails s -p 3000 -b '0.0.0.0' 
    volumes: 
     - ./app:/app 
    ports: 
     - "3000:3000" 
    depends_on: 
     - db 

./rails/Dockerfile

FROM ruby:2.3.3 
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs 
RUN mkdir /app 
WORKDIR /app 
ADD ./Gemfile /app/Gemfile 
ADD ./Gemfile.lock /app/Gemfile.lock 
RUN bundle install 

私はドッカーに新たなんだので、私は基本的な何かが欠けていてもよいです。

+0

、データベースは通常、使用できるようにいくつかの時間がかかります。実験として、rails serverコマンドを実行する前に10秒間スリープするシェルスクリプトでコマンドをラップしてみてください。 – Rickkwa

答えて

0

リックワは正しいですが、dbは安定するまでに時間がかかります。あなたが潜在的に次のようにRubyスクリプトを持つことで問題を回避することができ

:私の経験で

begin 
    retries ||= 0 
    Mysql2::Client.new(host: 'db', username: 'root') 
rescue 
    sleep 1 
    retry if (retries += 1) < 10 
end 
関連する問題