Я боролся с этой проблемой уже несколько дней и перепробовал практически все возможные решения на StackOverflow, но мне кажется, что ничего не работает.
Я занимаюсь разработкой микросервисов с использованием RabbitMQ
. Решение содержит несколько проектов и выполняется без проблем, но как только я использую опцию docker-compose
для сборки проекта, Visual Studio выдает следующее исключение:
RabbitMQ.Client.Exceptions.BrokerUnreachableException ExtendedSocketException: Соединение отказано 127.0.0.1:5672
В моем решении у меня есть три проекта, взаимодействующих друг с другом через RabbitMQ.
Ниже приведен код для моего файла YAML.
Мой docker-compose.yaml:
version: '3.4'
services:
rabbitmq:
hostname: webnet
image: rabbitmq:3.7.2-management
ports:
- "15672:15672"
- "5672:5672"
networks:
- webnet
sql-server-db:
container_name: sql-server-db
image: microsoft/mssql-server-linux:2017-latest
ports:
- "1433:1433"
environment:
SA_PASSWORD: "customerdbalten@123"
ACCEPT_EULA: "Y"
networks:
- webnet
myproject.simulation.api:
image: ${DOCKER_REGISTRY-}myprojectsimulationapi
build:
context: .
dockerfile: myproject.Simulation.Api/Dockerfile
links:
- rabbitmq
ports:
- '5000'
networks:
- webnet
myproject.updateservice.api:
image: ${DOCKER_REGISTRY-}myprojectupdateserviceapi
build:
context: .
dockerfile: myproject.updateservice.Api/Dockerfile
links:
- rabbitmq
- sql-server-db
ports:
- '5050'
networks:
- webnet
myproject.web:
image: ${DOCKER_REGISTRY-}myprojectweb
build:
context: .
dockerfile: MyProject.Web/Dockerfile
links:
- rabbitmq
ports:
- '5001'
networks:
- webnet
networks:
webnet:
driver: bridge
Мой файл Docker:
Мой файл Docker выглядит следующим образом:
FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
COPY
MyProject.UpdateService.Api/MyProject.UpdateService.Api.csproj MyProject.UpdateService.Api/
COPY MyProject.Common/MyProject.Common.csproj MyProject.Common/
RUN dotnet restore MyProject.UpdateService.Api/MyProject.UpdateService.Api.csproj
COPY . .
WORKDIR /src/MyProject.UpdateService.Api
RUN dotnet build MyProject.UpdateService.Api.csproj -c Release -o /app
FROM build AS publish
RUN dotnet publish MyProject.UpdateService.Api.csproj -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "MyProject.UpdateService.Api.dll"]
Я также создал другое простое решение, в котором нет ничего, кроме двух проектов - отправителя и получателя, - которое использует RabbitMq
,Это решение выдает то же exception
, в то время как docker-composing
, в противном случае оно просто запускается. Файл Yaml
содержит только код auto-generated
.
Буду очень признателен за любую помощь.
Заранее спасибо.