Car*_*nos 5 deployment ruby-on-rails docker linux-containers
我正在尝试使用 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
Run Code Online (Sandbox Code Playgroud)
一切正常,直到启动应用程序的那一刻,当服务器上的 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
Run Code Online (Sandbox Code Playgroud)
我没有看到可以放置 rake db:create db:migrate db:seed 命令的地方,如果我将它们放在 Dockerfile 的末尾,那么当 fig 尝试构建应用程序时,它会抱怨数据库服务器没有退出,(在 fig 构建应用程序容器时,其他容器没有启动),我无法解决这个更改 fig.yml 上的顺序的问题,我在这里面临蛋鸡问题,我可以让这个工作?
我确信所有链接都可以完美运行,因此问题更多地与脚本的编排有关。
找到解决方案了!:
我创建了一个 rake 任务来包装我需要的内容,它运行迁移、种子并启动 Rails 服务器,因此解决方法是通过以下命令更改Fig上的命令:
命令: rake my_app:setup
归档时间: |
|
查看次数: |
3790 次 |
最近记录: |