【发布时间】:2017-09-08 11:03:12
【问题描述】:
所以我已经预先构建了一个 rails 应用程序的 docker 映像。构建映像后,将运行迁移。当我使用docker run 运行图像时,一切正常。但是当我尝试运行 docker-compose 文件时,当我访问应用程序时,它告诉我需要运行迁移,但迁移是在构建步骤中运行的。
文件夹结构:
root/
my_app/
Dockerfile
docker-compose
这是我采取的步骤:
我在 Dockerfile 上运行 docker build -t my_app .:
FROM ruby:2.4-jessie
WORKDIR /usr/src/app
COPY ./my_app/Gemfile* ./
RUN bundle install
COPY ./my_app .
EXPOSE 3000
RUN rails db:migrate
CMD ["rails", "server", "-b", "0.0.0.0"]
一切正常,我可以看到迁移已成功运行。
接下来我用docker run -p 3000:3000 my_app运行它
我在浏览器中访问它,一切都很好。
接下来我在 docker-compose 文件上运行docker-compose up:
version: '3'
services:
my-app-container:
image: my_app
volumes:
- ./my_app:/usr/src/app
ports:
- 3000:3000
图像开始正常,但是当我在浏览器中访问它时得到:
Migrations are pending. To resolve this issue, run: bin/rails db:migrate RAILS_ENV=development
# Raises <tt>ActiveRecord::PendingMigrationError</tt> error if any migrations are pending.
def check_pending!(connection = Base.connection)
raise ActiveRecord::PendingMigrationError if ActiveRecord::Migrator.needs_migration?(connection)
end
【问题讨论】:
-
你试过 bin/rails db:migrate RAILS_ENV=development from terminal 吗?
标签: ruby-on-rails docker docker-compose rails-migrations