Docker -compose - контейнер mem sql - проблема с внутренним соединением - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь запустить докеризованную среду на машине с Ubuntu, содержащей бэкэнд memsql + java, используя docker -compose. Мой docker составной файл выглядит следующим образом:

version: "3.7"
services:
  memsql:
    image: memsql/quickstart
    container_name: memsql
    environment:
      MEMSQL_ROOT_PASSWORD: passW
      MEMSQL_DATABASE: db
    ports:
      - 3306:3306
      - 9000:9000
    volumes:
      - ./memsql:/var/lib/memsql

  backend:
    build:
      context: .
      dockerfile: java-dockerfile
    image: backend:1
    container_name: backend
    expose:
      - "8080"
    depends_on:
      - memsql
    volumes:
      - ./logs:/external
    command: ["java", "-jar", "server.jar", "-Xms1024m", " -Xmx2048m", "> /external/server.log"]

Когда я пытаюсь запустить его, сервер не может подключиться к моему контейнеру mem sql - он выдает ошибку соединения отказано.

Сам контейнер mem sql работает, я могу получить к нему доступ (docker exec -it memsql /bin/bash), проверить журналы (/memsql/master/tracelogs# cat memsql.log), войти в него (mysql -u root -h 127.0.0.1 -P 3306 --prompt="memsql> "). Действительно, он не создает указанную БД, и когда я вхожу в систему, он не запрашивает указанный пароль.

Я пробовал также различные сетевые c решения, такие как использование определенной сети или настройка сетевой режим для «хоста», но ни один из них не работал. Я подозреваю, что это проблема, связанная с mem sql (да, я знаю, что изображение, которое я использую, помечено как устаревшее), но не может показаться, что может быть. В логах единственная ошибка, которую я нашел:

ERROR: Thread 115082: Fn: Waiting for node to catch up with cluster state before starting replication management.

Любая помощь с благодарностью!

1 Ответ

0 голосов
/ 25 марта 2020

Я наконец-то понял проблему: контейнеру mem sql требуется несколько секунд, пока также не будут запущены кластеры, но мой внутренний контейнер пытается подключиться к нему заранее, поэтому в соединении отказано ошибка. Теперь мне просто нужно найти способ, как добавить задержку или проверку здоровья в уравнение. Найденные до сих пор решения не помогли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...