Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在不同的git存储库中分离Docker相关文件和Python相关文件是“正确的方法”吗?_Python_Docker_Github_Architecture_Microservices - Fatal编程技术网

在不同的git存储库中分离Docker相关文件和Python相关文件是“正确的方法”吗?

在不同的git存储库中分离Docker相关文件和Python相关文件是“正确的方法”吗?,python,docker,github,architecture,microservices,Python,Docker,Github,Architecture,Microservices,我正在和一个朋友开发一个应用程序,我正在编写所有的后端代码 我开始构建API,并在一个Git存储库中设置docker compose。包含app.py、my docker-compose.yml、Dockerfile flask和Dockerfile nginx的/app目录当前都位于同一目录中。我的朋友看到了我的代码,告诉我所有与Docker相关的文件都应该被拉入自己的Git Repo中,并且在运行微服务时应该只引用业务逻辑Repo 这是正确的吗?如果是这样的话,有人能告诉我如何实现这种模式吗

我正在和一个朋友开发一个应用程序,我正在编写所有的后端代码

我开始构建API,并在一个Git存储库中设置docker compose。包含app.py、my docker-compose.yml、Dockerfile flask和Dockerfile nginx的/app目录当前都位于同一目录中。我的朋友看到了我的代码,告诉我所有与Docker相关的文件都应该被拉入自己的Git Repo中,并且在运行微服务时应该只引用业务逻辑Repo


这是正确的吗?如果是这样的话,有人能告诉我如何实现这种模式吗?

我见过这种模式与更高级别的部署工具Kubernetes部署YAML文件、Helm图表、多服务Docker组合YAML文件,但对于Dockerfile来说没有太大意义

在单个服务的上下文中,我将Dockerfile、一个启动该服务本身的本地docker-compose.yml以及其他类似的构件放在服务存储库的根目录中;或者在子目录中;但不是在不同的存储库中。对于跨服务的事物,将它们放在不同的存储库中是有意义的

对于docker文件本身,问题是COPY命令不能引用传递给docker build命令的上下文目录之外的任何文件,docker build-f选项也要求docker文件在那里。如果Dockerfile位于服务的根目录中,那么这很简单;如果它在其他地方,那么你会有一个尴尬的设置,你必须上传你签出的所有东西作为docker构建上下文目录

git克隆。。。构建脚本 git克隆。。。myapp 这将上载作为上下文签出的所有内容 docker build-f build scripts/myapp/Dockerfile-t myapp:latest。 将Dockerfile保存在服务存储库中也有助于持续集成工具。如果您的CI系统在每次提交时都会重建内容,并且Dockerfile位于存储库中,那么您始终可以拥有最新的映像。如果构建脚本在其他地方,那么如果任何映像的设置发生更改,您就有可能不必要地重建所有内容

如果您需要同时部署多个服务,那么将它们保存在某个单独的存储库中可能是有意义的

这个'docker compose.yml'文件应该放在哪个目录中? 版本:“3” 服务: 服务-a: 图片:me/service-a:最新 服务-b: 图片:me/service-b:最新 环境: -服务地址=http://service-a 端口: - '8000:8000' Kubernetes YAML文件可能有点例外。通常会有几个组件在一起—部署、服务、数据库依赖项设置。。。他们有点专业化;它们还依赖于图像名称作为引用,而不是应用程序源代码本身。我见过这样一种设置,Kubernetes YAML文件或头盔图表位于它们自己的存储库中。我还看到了每个存储库都有自己的Kubernetes文件的设置。这主要取决于服务作者是否负责维护它们,或者您是否有一个专门的团队来管理与Kubernetes相关的一切—源布局反映了您的组织结构模型