docker 化的 Sinatra 应用程序应该将其源代码放在容器中还是安装在其中?

Should a docker-ized Sinatra app have its source code in the container or in a mount?

我研究了很多关于 dockerizing Sinatra、Rails 等的帖子,但我不清楚应用程序的源代码最好存放在哪里:在容器中,还是在 separate/external 挂载,用于生产网站?

我认为单独挂载的优势在于,如果站点的代码经常更新,那么我可以假设只需启动代码从 Git 导出到挂载,切换一个符号链接并可能以某种方式反弹服务器......?这样就不用重新创建和部署容器了,对吧?

而容器中的源代码那么我认为的一个优势是它是独立的和可移植的,如果这真的是一个优势吗?

我很想听听人们对此的利弊。

我们的应用程序很小,只有几个人使用,而且很少更改。

谢谢

对于本地开发,挂载一个应用程序目录并 运行 它在您的容器中是有意义的。但是对于生产,我总是把所有东西都放在容器里。否则就是乱七八糟的。以 gem 更新等开头。如果您首先添加 Gemfile 和 运行 捆绑包更新,然后添加应用程序文件,您将拥有一个非常精简的构建过程,只需很少的时间来更新。结合一些自动化,对于生产应用程序来说应该不是问题。只有当 Gemfile 更改时,Gems 才会更新。

示例 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