ruby-on-rails – Docker&Rails | bundler:找不到命令:rai
我是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并像魅力一样工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |