我想使用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作为卷共享。
答案 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
指令。