docker化的Sinatra应用程序的源代码是否在容器中或挂载?

我已经研究了很多关于dockerizing Sinatra,Rails等的post,但是我不清楚应用程序的源代码应该放在哪里:在容器中,还是在单独的/外部的安装中,用于生产网站?

我认为单独装载的优点是,如果站点的代码经常更新,那么我可以假设只是从Git开始将代码导出到挂载,切换一个符号链接,并可能反弹服务器。 。? 所以容器不需要重新创build和重新部署,对吧?

而在容器中有源代码,那么我认为一个好处就是它是完全独立和可移植的,如果这真的是一个优势?

我有兴趣听到这个人的利弊。

我们的应用程序很小,只有几个人使用,很less会改变。

谢谢

对于本地开发来说,安装一个应用程序目录并将其运行到您的容器中是有意义的。 但是为了生产,我总是把所有东西放在容器里。 否则只是乱七八糟。 开始与gem更新等。 如果您先添加Gemfile并运行软件包更新,然后添加应用程序文件,那么您将拥有非常精简的构build过程,只需要很less的时间来更新。 结合一些自动化,它不应该是生产应用程序的问题。 gem只会在Gemfile改变时更新。

示例Dockerfile:

# everything else ADD Gemfile* $APP/ ENV BUNDLE_GEMFILE=$APP/Gemfile \ BUNDLE_JOBS=2 \ BUNDLE_PATH=/bundle RUN bundle install --without development test ADD . $APP