bundler:找不到的命令:在示例项目上使用docker-compose进行组合

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

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

正如你可以看到,捆绑环境有问题,谁能告诉我如何解决这个问题?

通常情况下,Gemfile被复制到Dockerfile中 – 但是我认为如果在一个卷中安装应用程序,这是没有必要的,对吗? (大部分的例子都是使用ADD或COPY作为Gemfile或应用程序,但是当我正在开发时,我想避免这种情况,所以我总是可以改变的东西。

我也认为像docker-compose运行应用程序echo $ PATH应该返回$ PATH在我的容器,但它似乎是我的本地path相同? 与echo $ RAILS_ENV相同,它不会返回任何内容,尽pipe它是在撰写文件中设置的。

解决scheme:容器当然不会坚持捆绑的gem,那就是问题所在。 所以解决scheme是在Dockerfile中打包,或者在作为卷共享的app目录中包含gem。

docker-compose run app echo $PATH将始终返回您的本地path,因为环境variables由本地shell解释。

这会更好:

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

关于导轨,选中“ Rails 4 bundler: command not found: rails

bundle exec rake rails:update:bin可能有帮助(例如,作为DockerfileRUN指令)。