2014-04-22 216 views
4

我试图让我的运行轨道与码头工人和图的应用,它与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 

一切工作正常,直到启动应用程序的时刻,因为轨道初始化器钩在服务器启动然后我得到有关数据库连接的错误,数据库不存在!当然,因为它没有对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 

我没有看到一个地方,我可以把耙分贝:创建DB:DB迁移:种子命令!,如果我把它们放在Dockerfile的末尾,那么当无花果尝试构建应用程序时,它抱怨数据库服务器不会退出,(无花果创建应用程序容器的时候,其他容器没有启动),我可以不解决这个改变fig.yml, 我的鸡蛋问题在这里,我可以得到这个工作?

我确定所有的链接都能正常工作,所以问题更多的是关于脚本的编排。

+0

林也在寻找答案..有这么多的低级别教程外..但没有中间的东西:( – Lichtamberg

+0

看看我的答案 –

+0

注肯定,但这可能有帮助... http://stackoverflow.com/questions/31572970/how-to-run-rails-migrations-and-seeding-in-amazon-elastic-beansta lk-single-conta/31573537#31573537 –

回答

1

找到了解决办法!:

我创建了一个rake任务来包装我需要什么,它运行迁移,种子,并启动轨道服务器,所以解决方法是通过这一项上图更改命令:

命令:耙my_app应用:建立

+1

作为补充,请查看http://www.talkingquickly.co.uk/2014/06/rails-development-environment-with-vagrant-and-docker/的底部一个使用shell脚本的配方。 – Martin

+1

@CarlosCastellanos你可以分享你的耙子任务或一些更多的细节,你如何得到这个运行。 –

+0

“我知道了,你只需要这样做!” –