Ruby on rails Docker撰写失败,出现“require';”:无法加载这样的文件——rack/handler/rails(LoadError)

Ruby on rails Docker撰写失败,出现“require';”:无法加载这样的文件——rack/handler/rails(LoadError),ruby-on-rails,docker,docker-compose,dockerfile,Ruby On Rails,Docker,Docker Compose,Dockerfile,这是我的Dockerfile: FROM rails:4.2.4 MAINTAINER Brena Monteiro <me@monteirobrena.com> RUN mkdir -p ~/myapp COPY . ~/myapp COPY Gemfile ~/myapp/Gemfile COPY Gemfile ~/myapp/Gemfile.lock WORKDIR ~/myapp RUN bundle install CMD rails s -b 0.0.0.0 如果我运

这是我的Dockerfile:

FROM rails:4.2.4
MAINTAINER Brena Monteiro <me@monteirobrena.com>
RUN mkdir -p ~/myapp
COPY . ~/myapp
COPY Gemfile ~/myapp/Gemfile
COPY Gemfile ~/myapp/Gemfile.lock
WORKDIR ~/myapp
RUN bundle install
CMD rails s -b 0.0.0.0
如果我运行
docker run
则docker启动正确:

docker run -v ./:/Users/monteirobrena/docker/myapp -p 3000:8080 myapp
但当我运行
docker compose up
时,我收到以下错误:

➜  app git:(add-docker) ✗ docker-compose up         
myRecreating app_web_1
myAttaching to app_web_1
web_1 | /usr/local/bundle/gems/rack-1.6.4/lib/rack/handler.rb:78:in `require': cannot load such file -- rack/handler/rails (LoadError)
web_1 |   from /usr/local/bundle/gems/rack-1.6.4/lib/rack/handler.rb:78:in `try_require'
web_1 |   from /usr/local/bundle/gems/rack-1.6.4/lib/rack/handler.rb:16:in `get'
web_1 |   from /usr/local/bundle/gems/rack-1.6.4/lib/rack/server.rb:290:in `server'
web_1 |   from /usr/local/bundle/gems/railties-4.2.3/lib/rails/commands/server.rb:125:in `print_boot_information'
web_1 |   from /usr/local/bundle/gems/railties-4.2.3/lib/rails/commands/server.rb:75:in `start'
web_1 |   from /usr/local/bundle/gems/railties-4.2.3/lib/rails/commands/commands_tasks.rb:80:in `block in server'
web_1 |   from /usr/local/bundle/gems/railties-4.2.3/lib/rails/commands/commands_tasks.rb:75:in `tap'
web_1 |   from /usr/local/bundle/gems/railties-4.2.3/lib/rails/commands/commands_tasks.rb:75:in `server'
web_1 |   from /usr/local/bundle/gems/railties-4.2.3/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
web_1 |   from /usr/local/bundle/gems/railties-4.2.3/lib/rails/commands.rb:17:in `<top (required)>'
web_1 |   from /usr/src/app/bin/rails:9:in `require'
web_1 |   from /usr/src/app/bin/rails:9:in `<top (required)>'
web_1 |   from /usr/local/bundle/gems/spring-1.6.4/lib/spring/client/rails.rb:28:in `load'
web_1 |   from /usr/local/bundle/gems/spring-1.6.4/lib/spring/client/rails.rb:28:in `call'
web_1 |   from /usr/local/bundle/gems/spring-1.6.4/lib/spring/client/command.rb:7:in `call'
web_1 |   from /usr/local/bundle/gems/spring-1.6.4/lib/spring/client.rb:28:in `run'
web_1 |   from /usr/local/bundle/gems/spring-1.6.4/bin/spring:49:in `<top (required)>'
web_1 |   from /usr/local/bundle/gems/spring-1.6.4/lib/spring/binstub.rb:11:in `load'
web_1 |   from /usr/local/bundle/gems/spring-1.6.4/lib/spring/binstub.rb:11:in `<top (required)>'
web_1 |   from /usr/src/app/bin/spring:13:in `require'
web_1 |   from /usr/src/app/bin/spring:13:in `<top (required)>'
web_1 |   from bin/rails:3:in `load'
web_1 |   from bin/rails:3:in `<main>'
web_1 | Exiting
myapp_web_1 exited with code
➜  应用程序git:(添加docker)✗ 码头工人整理
myRecreating应用程序\u web\u 1
My正在连接到应用程序\u web\u 1
web_1 |/usr/local/bundle/gems/rack-1.6.4/lib/rack/handler.rb:78:在'require'中:无法加载这样的文件--rack/handler/rails(LoadError)
web_1 | from/usr/local/bundle/gems/rack-1.6.4/lib/rack/handler.rb:78:in'try_require'
web_1 | from/usr/local/bundle/gems/rack-1.6.4/lib/rack/handler.rb:16:in'get'
web_1 | from/usr/local/bundle/gems/rack-1.6.4/lib/rack/server.rb:290:in'server'
web|1 | from/usr/local/bundle/gems/railties-4.2.3/lib/rails/commands/server.rb:125:“打印启动信息”中
web_1| from/usr/local/bundle/gems/railties-4.2.3/lib/rails/commands/server.rb:75:in'start'
web|1 | from/usr/local/bundle/gems/railties-4.2.3/lib/rails/commands/commands|u tasks.rb:80:在“服务器中的块”中
web|1| from/usr/local/bundle/gems/railties-4.2.3/lib/rails/commands/commands|u tasks.rb:75:in'tap'
web|1 | from/usr/local/bundle/gems/railties-4.2.3/lib/rails/commands/commands|u tasks.rb:75:在“服务器”中
web|1| from/usr/local/bundle/gems/railties-4.2.3/lib/rails/commands/commands|u tasks.rb:39:in'run|u command!'
web_1| from/usr/local/bundle/gems/railties-4.2.3/lib/rails/commands.rb:17:in`'
web_1| from/usr/src/app/bin/rails:9:in'require'
web|u 1 | from/usr/src/app/bin/rails:9:in`'
web_1| from/usr/local/bundle/gems/spring-1.6.4/lib/spring/client/rails.rb:28:in'load'
web_1| from/usr/local/bundle/gems/spring-1.6.4/lib/spring/client/rails.rb:28:in'call'
web_1| from/usr/local/bundle/gems/spring-1.6.4/lib/spring/client/command.rb:7:in'call'
web_1| from/usr/local/bundle/gems/spring-1.6.4/lib/spring/client.rb:28:in'run'
web_1| from/usr/local/bundle/gems/spring-1.6.4/bin/spring:49:in`'
web|u 1 | from/usr/local/bundle/gems/spring-1.6.4/lib/spring/binstub.rb:11:in'load'
web_1| from/usr/local/bundle/gems/spring-1.6.4/lib/spring/binstub.rb:11:in`'
web_1| from/usr/src/app/bin/spring:13:in'require'
web|u 1 | from/usr/src/app/bin/spring:13:in`'
腹板1 |来自料仓/轨道:3:在“装载”中
web_1|来自bin/rails:3:in`'
web_1|正在退出
myapp_web_1已退出,代码为

有什么想法吗?

使用
bundle exec
启动rails服务器,如下所示:

 web:
  build: .
  command: bundle exec rails s -p 3000 -b '0.0.0.0'
  ports:
    - '3000:8080'
  volumes:
    - .:/Users/monteirobrena/myapp

没有docker它还能用吗?是的,没有Docker和使用
Docker run
都可以正常工作。这一行如何
COPY Gemfile~/myapp/Gemfile.lock
不应该是
COPY Gemfile.lock~/myapp/Gemfile.lock
?你能删除Docker文件
CMD rails s-b 0.0.0.0
的最后一行并再次尝试运行Docker compose吗?当我更改为
bundle exec rails
我收到这个错误`
require':无法加载这样的文件
。没有
CMD
行也一样:(我复制/粘贴您的
Dockerfile
docker在现有项目上编写yml
文件。我能够
构建
向上
,您能将
Gemfile
添加到您的问题中吗?
 web:
  build: .
  command: bundle exec rails s -p 3000 -b '0.0.0.0'
  ports:
    - '3000:8080'
  volumes:
    - .:/Users/monteirobrena/myapp