Tos*_*shi 5 ruby-on-rails docker rails-spring docker-compose
我用
当我开始
$ docker-compose exec web /bin/bash # ssh into the web server
$ bundle exec rails c
Run Code Online (Sandbox Code Playgroud)
我收到以下错误。
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'
Run Code Online (Sandbox Code Playgroud)
但是我已经把pq
gem 放在了 Gemfile 中。而且我已经尝试跟随,
$ bundle update pg
$ bundle uninstall pg && bundle install
$ bundle exec spring binstub --all
Run Code Online (Sandbox Code Playgroud)
但是我没有运气。
当我尝试时,
$ docker-compose exec web /bin/bash # ssh into the web server
$ DISABLE_SPRING=1 bundle exec rails c
Run Code Online (Sandbox Code Playgroud)
它确实有效。所以我认为 spring gem 不能正常工作。另外,如果我在本地做同样的事情,它确实有效。
我认为我docker_compose.yml
的设置不正确。有任何想法吗?
docker-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'
Run Code Online (Sandbox Code Playgroud)
通过以下方式调用容器内的应用程序bin/spring
:
$ docker-compose exec web bash
$ bin/spring rails c
Run Code Online (Sandbox Code Playgroud)
运行测试等也是如此:
$ bin/spring rspec
Run Code Online (Sandbox Code Playgroud)
单独运行 spring 以获得一些额外的提示:
$ bin/spring
Run Code Online (Sandbox Code Playgroud)
我使用 Ruby 2.4.3、Rails 5.1.4 和 Spring 2.0.2 对此进行了测试。
归档时间: |
|
查看次数: |
1289 次 |
最近记录: |