bundler:找不到命令:在示例项目上使用docker-compose的rails

时间:2015-12-17 13:43:16

标签: ruby-on-rails docker bundler

我想使用docker开发rails应用程序,因此我不必在本地安装数据库。因此我创建了以下基本示例(新的rails应用程序):

https://gist.github.com/solars/62eeae2f86ab6ec3fa35

正如您所看到捆绑环境存在问题,有人可以告诉我如何解决这个问题吗?

通常将Gemfile复制到Dockerfile中 - 但我认为如果将应用程序安装在卷中则不需要这样做,这是正确的吗? (大多数示例都使用ADD或COPY作为Gemfile或应用程序,但正如我正在开发的那样,我想避免这样做,所以我总能改变一些事情。

我还认为像docker-compose运行app echo $ PATH之类的东西应该在我的容器中返回$ PATH,但它似乎与我的本地路径相同?与echo $ RAILS_ENV相同,它不返回任何内容,尽管它在compose文件中设置..

解决方案:容器当然不会保留捆绑的宝石,这就是问题所在。因此,解决方案是在Dockerfile中捆绑,或者将app目录中的gem作为卷共享。

1 个答案:

答案 0 :(得分:2)

docker-compose run app echo $PATH将始终返回本地路径,因为本地shell会解释环境变量。

这会更好:

docker-compose run app sh -c 'echo $PATH' 

关于rails,请检查" Rails 4 bundler: command not found: rails"

bundle exec rake rails:update:bin可能有所帮助(例如,RUN中的Dockerfile指令。