【问题标题】:Docker rails migrationsDocker 轨道迁移
【发布时间】:2014-06-07 09:10:16
【问题描述】:

我正在尝试使用 docker 和 fig 运行我的 rails 应用程序,它也适用于 redis 服务器、mongodb、postgres 和 nginx, 这是我的 fig.yml 的样子:

pg:
  image: docker-index.my.com/postgres
  ports:
    - 5432
redis:
  image: docker-index.my.com/redis
  ports:
    - 6379
mongodb:
  image: docker-index.my.com/mongodb
  ports:
    - 27017
app:
  build: .
  command: bundle exec rails s
  volumes:
    - .:/beesor
  ports:
    - 3000:3000
  links:
    - pg
    - redis
    - mongodb
  environment:
    RAILS_ENV: production

在启动应用程序之前一切正常,因为服务器上的 Rails 初始化程序挂钩启动,然后我收到有关数据库连接的错误,数据库不存在!当然是因为它不是在 Dockerfile 上创建的(见下文)

Dockerfile 内容:

# DOCKER-VERSION 0.10.0
FROM docker-index.my.com/ruby:1.9.3
MAINTAINER my.com

RUN apt-get update -qq && apt-get install -y git-core xvfb curl nodejs libqt4-dev libgtk2.0-0 libgtkmm-3.0-1 libnotify4 sqlite3 libsqlite3-dev graphicsmagick imagemagick subversion libpq-dev libxml2-dev libxslt-dev git build-essential
RUN mkdir /my_app
WORKDIR /my_app

RUN gem install bundler

ADD Gemfile /my_app/Gemfile
ADD Gemfile.lock /my_app/Gemfile.lock
RUN bundle install
RUN bundle pack --all
ADD . /my_app

我没有看到可以放置 rake db:create db:migrate db:seed 命令的地方!,如果我将它们放在 Dockerfile 的末尾,那么当 fig 尝试构建应用程序时,它会抱怨数据库服务器没有退出,(在 fig 构建应用程序容器时,其他容器没有启动),我无法修复这个更改 fig.yml 上的顺序, 我在这里遇到了鸡蛋鸡问题,我可以让谁来解决这个问题?

我确信所有链接都能完美运行,因此问题更多在于脚本的编排。

【问题讨论】:

标签: ruby-on-rails deployment docker linux-containers


【解决方案1】:

找到了解决办法!:

我创建了一个 rake 任务来包装我需要的东西,它运行迁移、种子并启动 rails 服务器,所以修复方法是通过这个来更改 fig 上的命令:

命令:rake my_app:setup

【讨论】:

  • 另外,查看talkingquickly.co.uk/2014/06/… 的底部以获取使用shell 脚本的配方。
  • @CarlosCastellanos 您能否分享您的 rake 任务或有关您如何运行它的更多详细信息。
  • “我想通了。你只需要这样做!”
猜你喜欢
  • 2011-05-26
  • 1970-01-01
  • 1970-01-01
  • 2017-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多