加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Docker&Rails | bundler:找不到命令:rai

发布时间:2020-12-17 03:10:44 所属栏目:百科 来源:网络整理
导读:我是Docker的新手,对Rails来说还是新手. 当我运行docker-compose时,我收到此错误: web_1 | bundler: command not found: railsweb_1 | Install missing gem executables with `bundle install`app_web_1 exited with code 127 最初我在运行bundle install时
我是Docker的新手,对Rails来说还是新手.

当我运行docker-compose时,我收到此错误:

web_1  | bundler: command not found: rails
web_1  | Install missing gem executables with `bundle install`
app_web_1 exited with code 127

最初我在运行bundle install时遇到任何gem都遇到了麻烦.我的Gemfile中的每一个Gem都出现了“找不到任何来源的宝石”的错误.然后我尝试运行bundle(没有安装),它没有返回任何错误.

Rails肯定是安装的,因为输入rails给了我所有的使用选项.

此外,我可以看到供应商/缓存中的宝石.我尝试删除所有这些并运行bundle install,当捆绑器安装它们时,它们都开始逐个出现.

编辑:请随意纠正我的理解:因为运行bundle install意味着在Docker实例上安装gem,它不是“本地”安装的.在尝试解决此问题时,我在本地删除了所有宝石并重新安装了bundler.所以,当我运行gems list时,我只看到bundler.我运行了bundler install,它声称正在安装所有的gem.他们在哪里安装?它说这是供应商/缓存,这是真的.我可以在那里看到它们,但它仍然找不到任何宝石:它甚至找不到铁轨.

编辑2:我还应该提一下:bin / rails s启动服务器就好了.由于数据库实例没有运行,它不会加载任何东西,但我认为这是有道理的.

编辑3:我在本地运行gem install rails,仍然没有变化,但现在gems list返回rails及其依赖项.

下面是一些下面可能相关的文件和日志,可以帮助确定原因.请注意我将实际的应用程序名称更改为app.

运行gems列表返回:

*** LOCAL GEMS ***

actionmailer (5.1.1)
actionpack (5.1.1)
actionview (5.1.1)
activejob (5.1.1)
activemodel (5.1.1)
activerecord (5.1.1)
activesupport (5.1.1)
arel (8.0.0)
builder (3.2.3)
bundler (1.15.0)
concurrent-ruby (1.0.5)
erubi (1.6.0)
globalid (0.4.0)
i18n (0.8.1)
loofah (2.0.3)
mail (2.6.5)
method_source (0.8.2)
mime-types (3.1)
mime-types-data (3.2016.0521)
mini_portile2 (2.1.0)
minitest (5.10.2)
nio4r (2.0.0)
nokogiri (1.7.2)
rack (2.0.3)
rack-test (0.6.3)
rails (5.1.1)
rails-dom-testing (2.0.3)
rails-html-sanitizer (1.0.3)
railties (5.1.1)
rake (12.0.0)
sprockets (3.7.1)
sprockets-rails (3.2.0)
thor (0.19.4)
thread_safe (0.3.6)
tzinfo (1.2.3)
websocket-driver (0.6.5)
websocket-extensions (0.1.2)

我的Gemfile看起来像这样:

source 'https://rubygems.org'

git_source(:github) do |repo_name|
  repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
  "https://github.com/#{repo_name}.git"
end

gem 'gmail'

gem 'oauth','0.5.2'

gem 'twilio'

# Bundle edge Rails instead: gem 'rails',github: 'rails/rails'
gem 'rails','~> 5.0.1'
# Use postgres as the database for Active Record
gem 'pg'
# Use Puma as the app server
gem 'puma','~> 3.0'
# Use SCSS for stylesheets
gem 'sass-rails','~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier','>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails','~> 4.2'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer',platforms: :ruby

# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks','~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder','~> 2.5'
# Use Redis adapter to run Action Cable in production
# gem 'redis','~> 3.0'
# Use ActiveModel has_secure_password
# gem 'bcrypt','~> 3.1.7'

# Use Capistrano for deployment
# gem 'capistrano-rails',group: :development

group :development,:test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug',platform: :mri
end

group :development do
  # Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
  gem 'web-console','>= 3.3.0'
  gem 'listen','~> 3.0.5'
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
  gem 'spring-watcher-listen','~> 2.0.0'
end

# Windows does not include zoneinfo files,so bundle the tzinfo-data gem
gem 'tzinfo-data',platforms: [:mingw,:mswin,:x64_mingw,:jruby]

我的docker-compose.yml文件如下所示:

version: '2'
services:
  db:
    image: postgres
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/app
    ports:
      - "3000:3000"
    depends_on:
      - db

我的Dockerfile看起来像这样:

FROM ruby:2.4.0
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /app
WORKDIR /app
ADD Gemfile /app/Gemfile
ADD Gemfile.lock /app/Gemfile.lock
ADD . /app

运行bundle install会返回:

Using rake 12.0.0
Using oauth 0.5.2
Using mime-types-data 3.2016.0521
Using builder 3.2.3
Using multi_xml 0.6.0
Using concurrent-ruby 1.0.5
Using i18n 0.8.1
Using minitest 5.10.2
Using thread_safe 0.3.6
Using erubis 2.7.0
Using mini_portile2 2.1.0
Using rack 2.0.3
Using nio4r 2.0.0
Using websocket-extensions 0.1.2
Using arel 7.1.4
Using method_source 0.8.2
Using thor 0.19.4
Using bundler 1.15.0
Using pg 0.20.0
Using puma 3.8.2
Using sass 3.4.24
Using tilt 2.0.7
Using execjs 2.7.0
Using coffee-script-source 1.12.2
Using turbolinks-source 5.0.3
Using multi_json 1.12.1
Using byebug 9.0.6
Using bindex 0.5.0
Using rb-fsevent 0.9.8
Using ffi 1.9.18
Using gmail_xoauth 0.4.2
Using mime-types 3.1
Using httparty 0.15.5
Using tzinfo 1.2.3
Using nokogiri 1.7.2
Using rack-test 0.6.3
Using sprockets 3.7.1
Using websocket-driver 0.6.5
Using uglifier 3.2.0
Using coffee-script 2.4.1
Using turbolinks 5.0.1
Using rb-inotify 0.9.8
Using mail 2.6.5
Using twilio 3.1.1
Using activesupport 5.0.3
Using loofah 2.0.3
Using listen 3.0.8
Using gmail 0.6.0
Using rails-dom-testing 2.0.3
Using globalid 0.4.0
Using activemodel 5.0.3
Using jbuilder 2.6.4
Using spring 2.0.1
Using rails-html-sanitizer 1.0.3
Using activejob 5.0.3
Using activerecord 5.0.3
Using spring-watcher-listen 2.0.1
Using actionview 5.0.3
Using actionpack 5.0.3
Using actioncable 5.0.3
Using actionmailer 5.0.3
Using railties 5.0.3
Using sprockets-rails 3.2.0
Using coffee-rails 4.2.1
Using jquery-rails 4.3.1
Using web-console 3.5.1
Using rails 5.0.3
Using sass-rails 5.0.6
Updating files in vendor/cache
Bundle complete! 18 Gemfile dependencies,68 gems now installed.
Bundled gems are installed into ./vendor/cache.

解决方法

我不确定这是否是一个合适的解决方案,但我尝试添加

RUN bundler install

到我的Dockerfile.我删除了所有的图像,运行了docker-compose up并像魅力一样工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读