bundler: command not found: rails with docker-compose 示例项目
bundler: command not found: rails with docker-compose on a sample project
我想使用 docker 开发一个 rails 应用程序,这样我就不必在本地安装数据库了。因此我创建了以下基本示例(新 rails 应用程序):
https://gist.github.com/solars/62eeae2f86ab6ec3fa35
如您所见,捆绑环境存在问题,谁能告诉我如何解决这个问题?
通常 Gemfile 被复制到 Dockerfile 中 - 但我认为如果将应用程序安装在卷中则没有必要这样做,对吗? (大多数示例都对 Gemfile 或应用程序使用 ADD 或 COPY,但在我开发过程中,我想避免这种情况,这样我就可以随时进行更改。
我还认为 docker-compose 运行 app echo $PATH 应该 return 我容器中的 $PATH ,但它似乎与我本地的相同小路?与 echo $RAILS_ENV 相同 return 什么都没有,尽管它是在撰写文件中设置的..
解决方案:容器当然不会保留捆绑的 gem,这就是问题所在。所以解决方案是要么捆绑在 Dockerfile 中,要么将 gem 放在作为卷共享的应用程序目录中。
docker-compose run app echo $PATH
将始终 return 您的本地路径,因为环境变量由本地 shell.
解释
这样会更好:
docker-compose run app sh -c 'echo $PATH'
关于 rails,勾选“Rails 4 bundler: command not found: rails
”
bundle exec rake rails:update:bin
可能会有所帮助(例如,作为 Dockerfile
中的 RUN
指令)。
我想使用 docker 开发一个 rails 应用程序,这样我就不必在本地安装数据库了。因此我创建了以下基本示例(新 rails 应用程序):
https://gist.github.com/solars/62eeae2f86ab6ec3fa35
如您所见,捆绑环境存在问题,谁能告诉我如何解决这个问题?
通常 Gemfile 被复制到 Dockerfile 中 - 但我认为如果将应用程序安装在卷中则没有必要这样做,对吗? (大多数示例都对 Gemfile 或应用程序使用 ADD 或 COPY,但在我开发过程中,我想避免这种情况,这样我就可以随时进行更改。
我还认为 docker-compose 运行 app echo $PATH 应该 return 我容器中的 $PATH ,但它似乎与我本地的相同小路?与 echo $RAILS_ENV 相同 return 什么都没有,尽管它是在撰写文件中设置的..
解决方案:容器当然不会保留捆绑的 gem,这就是问题所在。所以解决方案是要么捆绑在 Dockerfile 中,要么将 gem 放在作为卷共享的应用程序目录中。
docker-compose run app echo $PATH
将始终 return 您的本地路径,因为环境变量由本地 shell.
这样会更好:
docker-compose run app sh -c 'echo $PATH'
关于 rails,勾选“Rails 4 bundler: command not found: rails
”
bundle exec rake rails:update:bin
可能会有所帮助(例如,作为 Dockerfile
中的 RUN
指令)。