Ошибка - Миграции ожидаются. Чтобы решить эту проблему, запустите: bin / rake db: migrate RAILS_ENV = development - PullRequest
0 голосов
/ 14 марта 2019

Я настраиваю докер для существующего приложения rails и получаю сообщение об ошибке при запуске localhost: 3000.

Миграции ожидаются. Чтобы решить эту проблему, запустите: bin / rake db: migrate RAILS_ENV = development

Как настроить rake db: мигрировать в Docker docker-compose yml файл

 version: '3'
volumes:  
postgres_data: {} 
services:
 redis:
  image: redis
 command: redis-server 
  ports:
  - "6379:6379"

app:    
 build:      
   context: .      
  dockerfile: /Users/admin/git/generic/deviceapp/docker/app/Dockerfile    
  depends_on:      
   - db  
db:    
image: postgres    
volumes:      
  - postgres_data:/var/lib/postgresql/data  
web:    
build:      
  context: .      
  dockerfile: /Users/admin/git/generic/deviceapp/docker/web/Dockerfile    
depends_on:      
  - app    
ports:      
  - 80:80

База данных yml файла

development:
adapter: postgresql
encoding: unicode
database: Myapp
pool: 5
username: san
password: test@123
host: db

DockerFile

FROM ruby:2.5.0
ENV RAILS_ROOT /Users/admin/git/generic/Myapplication
ENV REDIS_URL=redis://redis:6379/0
RUN mkdir -p $RAILS_ROOT 
# Set working directory
WORKDIR $RAILS_ROOT
# Setting env up
ENV RAILS_ENV='development'
ENV RACK_ENV='development'
# Adding gems
COPY Gemfile Gemfile
COPY Gemfile.lock Gemfile.lock
RUN bundle install
# Adding project files
COPY . .
RUN gem install bundler
RUN bundle install

COPY . .
EXPOSE 3000

CMD ["bundle", "exec", "puma", "-C", "config/puma.rb", "development", "- 
 b", "tcp://0.0.0.0:3000"] 

1 Ответ

1 голос
/ 14 марта 2019

Слушай, в моем случае, я решил эту проблему, сказав докеру выполнить некоторые команды bash в docker-compose.yml. Как:

В вашем docker-compose:

# your_app_path/docker-compose.yml
...
web:
  build: 
  ...
  command: bash -c "build-scripts/container/web"
...

Когда ваш докер «поднимается», будет выполняться build-scripts/container/web.

Ваш Dockerfile будет вызван на docker-compose build, вы не должны выполнять команды в этом файле.

Создайте build-scripts/container/web, с таким содержанием:

#!/bin/bash

bundle check || bundle install

bundle exec rake db:setup && \
bundle exec rails s -p 3000 -b '0.0.0.0' -P /tmp/rails.pid

Вы можете обменять rake db:setup на rake db:migrate или что-то в этом роде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...