Zuguki
@Zuguki
I'm working all the time!

Как обратиться к контейнеру по имени?

Не получается обратиться к контейнеру по его хостнейму и внутреннему порту из другого контейнера.
Контейнеры находятся в одном compose файле.
Решил обратиться по hostname:port, через httpClient, чтобы получить ошибку и получил:
`System.Net.Http.HttpRequestException: Name or service not known (keycloak:8080) ---> System.Net.Sockets.SocketException (0xFFFDFFFF): Name or service not known `

Вызывал через:
var metadata = _configuration["Authentication:MetadataAddress"]; // http://keycloak:8080/realms/keycloak-auth/.well-known/openid-configuration
using var response = await _httpClient.GetAsync(metadata!);
response.EnsureSuccessStatusCode();
    
var jsonResponse = await response.Content.ReadAsStringAsync();
Log.Information($"{jsonResponse}\n");
return Ok(jsonResponse);


Compose выглядит так:

keycloak:
    image: quay.io/keycloak/keycloak:26.0.0
    container_name: keycloak
    command: start-dev
    environment:
      - KC_HEALTH_ENABLE=true
      - KEYCLOAK_ADMIN=admin
      - KEYCLOAK_ADMIN_PASSWORD=passwd
    volumes:
      - ./.containers/identity:/opt/keycloak/data
    ports:
      - "10001:8080"

  post_service:
    container_name: post_service
    image: post_service
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
    build:
      context: .
    ports:
      - "8082:8080"
    networks:
      - keycloak_network
      - posts_postgres_network
    depends_on:
      - keycloak
      - post_postgres
  • Вопрос задан
  • 56 просмотров
Решения вопроса 1
Контейнеру keycloak нужно указать в networks хотя бы одну сеть, в которую добавлен post_service. Сейчас они у вас в разных сетях (keycloak в дефолтной для проекта, так как не указана никакая, а post_service только в тех, которые перечислены) и потому друг друга не видят.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы