Руководство по Dapr и Docker Compose
Я хожу по кругу, пытаясь понять, как это сделать, но у меня такая ситуация. Я пытаюсь включить Dapr в свои микросервисы ASP.NET Core.
Я установил Dapr локально, следуя документации (
У меня есть несколько основных микросервисов ASP.NET для запуска, но каждая служба находится в своем собственном решении Visual Studio ... то есть у меня нет одного решения, содержащего все мои проекты микросервисов.
У меня вопрос: как я могу использовать Docker Compose для развертывания (и отладки) одного микросервиса? Я пытаюсь понять, как внедрить сопроводительный элемент Dapr в свой микросервис, но при этом иметь ссылку на существующие и уже работающие контейнеры Dapr для Redis, Placement и т. Д. Возможно ли это? Я старался изо всех сил следовать документации, но, похоже, у меня не получается заставить ее работать. Мой файл для создания в настоящее время выглядит так:
version: '3.4'
services:
microservicea:
image: ${DOCKER_REGISTRY-}microservicea
build:
context: .
dockerfile: MicroserviceA/Dockerfile
#depends_on:
# - redis
# - placement
microservicea-dapr:
image: "daprio/daprd:edge"
command: ["./daprd",
"-app-id", "microservicea",
"-app-port", "3000",
"-placement-host-address", "placement:50005",
"-dapr-grpc-port", "50002",
"-components-path", "/components"]
depends_on:
- microservicea
network_mode: "service:microservicea"
Если я ошибаюсь, как лучше всего справиться с этим сценарием?
В конечном итоге я пытаюсь удовлетворить ситуацию, когда я работаю над микросервисом A, но эта служба обращается к микросервису B (служба Dapr для вызова службы). Я могу предположить, что микросервис B уже создан и развернут локально и работает в собственном контейнере (с введенным сайдкаром Dapr). Мне просто нужен файл Docker Compose, который будет собирать микросервис A, вставлять побочный файл Dapr и развертывать контейнер локально, чтобы я мог тестировать и отлаживать.
Заранее спасибо.
1 ответ
Если я правильно понял ваш вопрос, попробуйте выполнить следующую настройку:
[ [SericeA]-[ServiceA-Dapr] ] -->[docker-network]<--[ [ServiceB]-[ServiceB-Dapr] ]
На этой диаграмме и ее коляске Dapr, соединяющей
[docker-network]
. То же самое и с коляской.
Если вы создаете новую сеть:
docker network create -d bridge my-dapr-network
А затем обновите свои файлы для создания
ServiceA
и
ServiceB
Сюда:
version: '3.4'
networks:
default:
external:
name: my-dapr-network
services:
microservicea:
image: ${DOCKER_REGISTRY-}microservicea
build:
context: .
dockerfile: MicroserviceA/Dockerfile
microservicea-dapr:
image: "daprio/daprd:edge"
command: ["./daprd",
"-app-id", "microservicea",
"-app-port", "3000",
"-placement-host-address", "placement:50005",
"-dapr-grpc-port", "50002",
"-components-path", "/components"]
depends_on:
- microservicea
network_mode: "service:microservicea"
Важным моментом здесь является эта часть:
networks:
default:
external:
name: my-dapr-network
Если вы внесете это изменение в оба файла compose, вы сможете запускать \ останавливать их независимо, и они всегда будут подключаться к одной и той же существующей внешней сети моста. В результате они смогут общаться.