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
可能有帮助(例如,作为Dockerfile
的RUN
指令)。