docker-compose Rails spring не работает
Я использую
- Rail 4.2.5.1 работает с контейнером
- Ruby 2.3.1 работает с контейнером
Когда я начну
$ docker-compose exec web /bin/bash # ssh into the web server
$ bundle exec rails c
Я получил следующую ошибку.
from /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.1/lib/bundler/runtime.rb:86:in `each'
from /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.1/lib/bundler/runtime.rb:86:in `block in require'
from /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.1/lib/bundler/runtime.rb:75:in `each'
from /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.1/lib/bundler/runtime.rb:75:in `require'
from /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.13.1/lib/bundler.rb:106:in `require'
from /usr/src/app/config/application.rb:7:in `<top (required)>'
from /usr/local/bundle/gems/spring-1.7.2/lib/spring/application.rb:82:in `require'
from /usr/local/bundle/gems/spring-1.7.2/lib/spring/application.rb:82:in `preload'
from /usr/local/bundle/gems/spring-1.7.2/lib/spring/application.rb:143:in `serve'
from /usr/local/bundle/gems/spring-1.7.2/lib/spring/application.rb:131:in `block in run'
from /usr/local/bundle/gems/spring-1.7.2/lib/spring/application.rb:125:in `loop'
from /usr/local/bundle/gems/spring-1.7.2/lib/spring/application.rb:125:in `run'
from /usr/local/bundle/gems/spring-1.7.2/lib/spring/application/boot.rb:19:in `<top (required)>'
from /usr/local/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
Однако я уже поставил pq
драгоценный камень в Gemfile. И я уже попробовал следующее,
$ bundle update pg
$ bundle uninstall pg && bundle install
$ bundle exec spring binstub --all
Однако мне не повезло.
Когда я пытался,
$ docker-compose exec web /bin/bash # ssh into the web server
$ DISABLE_SPRING=1 bundle exec rails c
Это работает. Поэтому я думаю, что весенний драгоценный камень не работает правильно. Также, если я делаю то же самое локально, это работает, хотя.
Я думаю мой docker_compose.yml
не настроен правильно. Есть идеи?
докер-compose.yml
web:
depends_on:
- 'postgres'
- 'redis'
build: .
command: rails server -b 0.0.0.0
ports:
- '3000:3000'
volumes:
- '.:/usr/src/app'
env_file:
- '.env'
postgres:
image: 'postgres:9.4.4'
environment:
POSTGRES_USER: 'postgres'
ports:
- '5432:5432'
redis:
image: 'redis:3.2-alpine'
command: redis-server
ports:
- '6379:6379'
worker:
depends_on:
- 'postgres'
- 'redis'
build: .
command: bundle exec sidekiq -C config/sidekiq.yml.erb
volumes:
- '.:/usr/src/app'
env_file:
- '.env'
1 ответ
Запустите приложение внутри контейнера через bin/spring
:
$ docker-compose exec web bash
$ bin/spring rails c
То же касается и тестов
$ bin/spring rspec
Запустите весну в одиночку для некоторых дополнительных подсказок:
$ bin/spring
Я проверил это на Ruby 2.4.3, Rails 5.1.4 и Spring 2.0.2.