我有一个简单的 Rails 应用程序,我正在尝试使用 Docker 运行它。当我运行 docker-compose up
它运行但是当我加载一个页面时它告诉我我的数据库不存在。即使当我运行 docker-compose run app rails db:create
它说数据库已经存在。
docker-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
我是 Docker 的新手,所以我可能缺少一些基本的东西。
最佳答案
Rickkwa 是正确的,数据库需要一些时间才能稳定。
您可以使用包含以下内容的 Ruby 脚本来解决此问题:
begin
retries ||= 0
Mysql2::Client.new(host: 'db', username: 'root')
rescue
sleep 1
retry if (retries += 1) < 10
end
关于ruby-on-rails - docker-compose rails app 在用完时找不到数据库,但在运行时找到了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41078013/