Как развернуть MS Orleans в Docker?

Есть asp.net core web api сервер (Микросервисы) и проект на Orleans. На данный момент мне нужно это всё развернуть в Dcoker. Скажу сразу, я не работал с Orleans и толком не понимаю что там и куда.

Я создал два Dockerfile (.api, .orleans). С билдом контейнеров проблем нету, Orleans запускается, даже curl http://localhost:8080 могу выполнить.

Проблема начинается с использованием Docker-compose. Вот так он выглядит:

services:
  api:
      build: 
        context: .
        dockerfile: Dockerfile.api
      ports:
        - 5001:5001
      networks:
        - siloNet

  silo:
      build: 
        context: .
        dockerfile: Dockerfile.orleans
      ports:
        - 7182:7182
        - 30000:30000
      networks:
        - siloNet

networks:
  siloNet:
    driver: bridge

После запуска docker-compose build/up сначала запускается Orleans (Так и задумано), после чего API. На этом момент получается исключение:

api-1      |       Connection attempt to endpoint S127.0.0.1:30000:0 failed
api-1      |       Orleans.Networking.Shared.SocketConnectionException: Unable to connect to 127.0.0.1:30000. Error: ConnectionRefused
api-1      |          at Orleans.Networking.Shared.SocketConnectionFactory.ConnectAsync(EndPoint endpoint, CancellationToken cancellationToken) in /_/src/Orleans.Core/Networking/Shared/SocketConnectionFactory.cs:line 54
api-1      |          at Orleans.Runtime.Messaging.ConnectionFactory.ConnectAsync(SiloAddress address, CancellationToken cancellationToken) in /_/src/Orleans.Core/Networking/ConnectionFactory.cs:line 61
api-1      |          at Orleans.Runtime.Messaging.ConnectionManager.ConnectAsync(SiloAddress address, ConnectionEntry entry) in /_/src/Orleans.Core/Networking/ConnectionManager.cs:line 193

Конфигурация соединения между сервисами на стороне Orleans:

IHost host = new HostBuilder() .UseOrleans(siloBuilder => { siloBuilder .AddMemoryGrainStorage("DevStoreName") .Configure(options => { options.ClusterId = "ClusterIdName"; options.ServiceId = "ServiceIdName"; }) .UseLocalhostClustering() .Configure(options => options.AdvertisedIPAddress = IPAddress.Loopback); }) .ConfigureServices(services => { // ... }) .ConfigureLogging(logging => logging.AddConsole()) .Build();

На стороне asp.net web api:

var builder = WebApplication.CreateBuilder(args);

builder.Host
    .UseOrleansClient(client =>
    {
        client
            .UseLocalhostClustering()
            .Configure<ClusterOptions>(options =>
            {
                options.ClusterId = "ClusterIdName";
                options.ServiceId = "ServiceIdName";
            });
    })
    .ConfigureLogging(logging => logging.AddConsole());

Суть в том, что сам сервер работает в Dev моде, т.е., при запуске того же дебага они нормально общаются, всё работает, никаких ошибок нет. Но я не могу развернуть ту же конфигурацию на Docker, потому что ругается на 127.0.0.1:30000 (В исключении). Кто не знаком, может поинтересоваться, где прописан этот адрес/порт? Он прописан как дефолтный порт в методе .UseLocalhostClustering(): Extention


Ответы (0 шт):