我有多个Web应用程序(app1,app2,app3 ... appN),每个Web应用程序都相互交互(通过http)。每个Web应用程序都将在单独的Docker容器中运行。通过安装git中的代码,设置数据库默认值并运行一些初始化来安装每个应用程序。所有应用程序都将在单个主机上运行(每个开发人员都将在其系统上拥有他/她所有应用程序的副本)。
app3的所有者(以前)不会打扰或了解其他应用程序的设置,并且很乐意采用其他应用程序的默认设置。质量检查小组也将不依赖默认配置来设置应用程序。
注意:git存储库已通过密码验证。
要求是:
好吧, docker 是一个很好的解决方案,我们可以完成大部分任务。但是,以下是问题:
任何建议欢迎!
最佳答案
使您的应用程序进入Docker镜像的更简单方法通常是使用ADD
命令。
假设您的存储库如下所示:
.git
my_app_stuff/
more_app_stuff/
然后只需将
Dockerfile
放在.git
旁边,并使用:ADD . /app
当您从该目录运行
docker build .
时,您的应用程序将通过/app
注入(inject)到容器中。现在,这还不能完全解决,因为它还会将
.git
加载到您的图像中,您可能要避免这样做(尤其是如果您在.git/config
中包含凭据!)。要解决此问题,只需添加包含
.dockerignore
的.git
纯文本文件,告诉Docker它应忽略此目录。最后,您的树应如下所示:
.dockerignore
.git
my_app_stuff/
more_app_stuff/
请注意,如果开发人员愿意,他们可以使用
-v ...
将应用程序的本地副本安装在/app
上,并覆盖图像中内置的副本。现在,就从容器打包到
git pull
而言,这还不能完全解决您的问题。如果确实要执行此操作,则需要将
.git
保留在其中,并确保在启动容器时(可能通过卷或环境变量)以某种方式将有效凭据传递给了容器。关于git - docker:在docker镜像中从git安装应用程序代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32591659/