ydb icon indicating copy to clipboard operation
ydb copied to clipboard

Docker-compose doesn't work with DNS resolution failed error

Open vokson opened this issue 8 months ago • 1 comments

Добрый день,

Пытаюсь запустить YDB через docker-compose аналогично тому, как указано здесь https://ydb.tech/docs/ru/quickstart с таким конфигом


  ydb:
    container_name: ydb-local
    image: cr.yandex/yc/yandex-docker-local-ydb:latest
    platform: linux/amd64
    environment:
      <<: *x-ydb-environment
    ports:
    - "2135:2135"
    - "2136:2136"
    - "8765:8765"
    volumes:
      - ydb_certs:/ydb_certs 
      - ydb_data:/ydb_data
    networks:
      app_network:
        aliases:
          - ydb.lvh.me

Если контейнеры общаются между собой, то все ОК. Но, если я пытаюсь законнектится из программы, которая работает не в контейнере (при локальной разработке). Получаю такую ошибку

<main>: Error: GRpc error: (14): failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:2136: Ssl handshake failed: SSL_ERROR_SSL: error:1408F10B:SSL routines:ssl3_get_record:wrong version number
<main>: Error: Grpc error response on endpoint localhost:2136
<main>: Error: Endpoint list is empty for database /local, cluster endpoint localhost:2136.

Проблема возникает из-за того, что нода имеет свое имя (каждый раз случайное), которое добавляется докером в DNSNames контейнера, но не добавляется в Aliases и поэтому не пингуется.

image image

Аналогичная проблема с Kuber была описана здесь https://github.com/ydb-platform/ydb/issues/108

На данный момент решил проблему локальной разработки добавлением hostname: localhost который нужно убирать при деплое

image image

Можно ли как-то решить данную проблему, чтобы docker-compose был одинаковым и для development, и для production

vokson avatar Jun 03 '24 12:06 vokson