да, вы можете сделать это так, как вы сказали, создав файл составления для каждой службы, но если вы хотите сохранить его в чистоте, вы можете поместить их в один файл, как показано ниже:
version: '2'
services:
rabbitmq:
image: rabbitmqImg
networks:
- rabbitmq
keycloak:
image: keycloakImg
networks:
- keycloak
MS-A:
image: MSImg
networks:
- keycloak
MS-B:
image: MSImg
networks:
- keycloak
MS-C:
image: MSImg
networks:
- keycloak
- rabbitmq
MS-D:
image: MSImg
networks:
- keycloak
- rabbitmq
networks:
rabbitmq:
external:
name: rabbitmq
keycloak:
external:
name: keycloak
с этимМикросервисы yaml могут общаться друг с другом через сеть keycloak, все микросервисы могут общаться с сервером keycloak, также используя сеть keycloak, а MS-C, MS-D могут общаться с rabbitmq через сеть rabbitmq.но если есть или будут какие-то другие микросервисы, которым не нужно общаться ни с rabbitmq, ни с keycloak, вам следует создать другую сеть и включить в нее микросервисы и помещать микросервисы в другие сети по мере необходимости.
, как сказал вам Аннуайможно использовать режим роя или kubernetes, но если вы новичок, придерживайтесь docker-compose, после этого для масштабирования и оркестровки вы можете использовать эти инфраструктуры.
EDIT: для баз данных существует несколько способовэто зависит от архитектуры вашей базы данных.например, если у вас есть контейнер базы данных для MS, вы должны создать сеть для MS, как показано ниже:
version: '2'
services:
# General Services
rabbitmq:
image: rabbitmqImg
networks:
- rabbitmq
keycloak:
image: keycloakImg
networks:
- keycloak
# Micro Services
MS-A:
image: MSImg
networks:
- ms-a-net
- keycloak
MS-B:
image: MSImg
networks:
- ms-b-net
- keycloak
MS-C:
image: MSImg
networks:
- ms-c-net
- keycloak
- rabbitmq
MS-D:
image: MSImg
networks:
- ms-d-net
- keycloak
- rabbitmq
# Database Services
DB-A:
image: DBImg
networks:
- ms-a-net
DB-B:
image: DBImg
networks:
- ms-b-net
DB-C:
image: DBImg
networks:
- ms-c-net
DB-D:
image: DBImg
networks:
- ms-d-net
networks:
rabbitmq:
external:
name: rabbitmq
keycloak:
external:
name: keycloak
# Services Network
ms-a-net:
external:
name: ms-a-net
ms-b-net:
external:
name: ms-b-net
ms-c-net:
external:
name: ms-c-net
ms-d-net:
external:
name: ms-d-net