我正在开发一个Web应用程序,它需要很少的微服务,例如URL缩短,邮件程序,分析等等......这些服务中的每一个都实现为REST api,因此它们可以相互通信。这些服务中的每一个都有一个 docker-compose.yml 文件,并使用像nginx,php,mysql等容器...我希望这些工作作为一个系统。我不想将这些REST apis暴露给docker网络之外的任何人
我的问题是我如何组合来自每个服务的多个 docker-compose.yml 文件,以便它们一起工作?或者我应该使用一个大的 docker-compose.yml 文件来定义一个网络下的所有服务?或者我应该只将我的每个服务基于一个容器(ubuntu作为基础并通过Dockerfile安装php,mysql,nginx)然后在共享网络上通过 docker-compose.yml 运行它们?或者我误解了使用Docker实现微服务?
答案 0 :(得分:3)
如何组合每个服务的多个
docker-compose.yml
文件,以便它们协同工作?
如果选择此路径,请确保您的容器附加到相同的网络。您可以在此处找到有关此案例的信息:Networking in Compose: Use a pre-existing network。
或者我应该使用一个大的
docker-compose.yml
文件来定义一个网络下的所有服务吗?
由您决定这是否应该是您的方法。在这种情况下,您是正确的,所有容器都可以附加到将要创建的默认网络。来自相同的文档:
注意:您的应用程序的网络名称基于“项目名称”,该名称基于其所在目录的名称。您可以使用--project-name
覆盖项目名称标记或COMPOSE_PROJECT_NAME
环境变量。
或者我应该将我的每个服务仅基于一个容器(ubuntu作为基础并通过Dockerfile安装php,mysql,nginx)
我不太确定,你的意思到底是什么......