由于
Dockerfile名称不能更改,因此不必修改Dockerfile的唯一方法是将每个服务存储在其自己的单独目录中。明确分离,每个服务都有其自己的Dockerfile和/或启动配置。
但这提出了一个问题:如何处理多个服务共享的代码?使用符号链接(非常适合在标准环境服务之间共享代码)对于灵活的环境服务不起作用,请参阅[GAE项目中的灵活环境模块之间的共享代码。
我看到了几种可能的方法,都不是很理想的方法,但是可能比您目前拥有的方法更具吸引力:
- 硬链接每个共享的源代码文件(因为无法硬链接目录)。有点乏味且容易出错,但每个文件只需执行一次
- 将您的共享代码打包并发布为外部库,并
requirements.txt
使用它添加到每个服务的文件中 - 将共享代码拆分到一个单独的存储库中,并在每个服务中使用它共享该存储库的副本(如果使用git,则可能是git子模块)。您只需要确保在服务部署时将共享存储库拉到正确的版本-可以通过自动化非常可靠地完成。如果您在此存储库中有未提交的更改,则要稍微复杂一些-您必须在所有服务中修补相同的更改。
- 有多个具有不同名称的Dockerfile副本,您只需复制它们即可,而不必始终编辑同一文件。用符号链接代替复制 也可能会 起作用,因为不需要在服务目录之外跟随符号链接,如果只是将符号链接复制为符号链接,它将起作用。



