Докер с MySQL и Джанго. Отказ от подключения к mysql, несмотря на любые попытки - PullRequest
0 голосов
/ 09 ноября 2018

Пока я перепробовал все, что мог найти в интернете, но, похоже, ничего не помогло.

Это мой файл docker-compose.yml:

version: '3.3'

services:
  ivs_fraud:
    build:
      context: .
      args:
        GIT_SSH_KEY: ${GIT_SSH_KEY}
    image: ivs_fraud:latest
    container_name: fraud
    depends_on:
      - ivsdb
    links:
      - ivsdb
    networks:
      - database_network

networks:
  database_network:
    driver: bridge

И у меня есть ссылка / зависимость от службы ivsdb, которая определена в другом файле docker-compose-dev.yml:

version: '3.3'

services:
  ivsdb:
    image: mysql
    container_name: ivsdb
    networks:
      - database_network
    ports:
      - ${DEFAULT_DB_PORT}:3306
    restart: always
    environment:
      MYSQL_DATABASE: ${DEFAULT_DB_NAME}
      MYSQL_USER: ${DEFAULT_DB_USER}
      MYSQL_PASSWORD: ${DEFAULT_DB_PASS}
      MYSQL_ROOT_PASSWORD: ${DEFAULT_DB_ROOT_PASS}

Это мой файл .env (Django читает этот файл .env и создает соединение в соответствии с ним):

DEFAULT_DB_NAME=ivsdb
DEFAULT_DB_HOST=ivsdb
DEFAULT_DB_PORT=10001
DEFAULT_DB_USER=root
DEFAULT_DB_PASS=root
DEFAULT_DB_ROOT_PASS=root

И я продолжаю получать:

(2003, «Не удается подключиться к серверу MySQL через« ivsdb »(111) отказался ")")

Есть несколько модификаций, которые я попробовал безуспешно:

  1. Переместить все в один файл docker-compose
  2. Полностью избавиться от записи "сети"
  3. Изменить хосты на ivsdb / 127.0.0.1 / localhost / 0.0.0.0

Вещи, которые работают:

  1. Служба Djago работает хорошо
  2. Служба Mysql работает хорошо.

Я могу подключиться к нему с помощью командной строки:

mysql -uroot -proot -P10001 --protocol=tcp 

или

mysql -uroot -proot -P10001 -h127.0.0.1 (IP adress enforces tcp protocol)

Похоже, Django испытывает трудности с подключением к контейнеру mysql. Но, судя по «Отказ в соединении» - django может добраться до контейнера mysql.

Чего мне не хватает?

1 Ответ

0 голосов
/ 09 ноября 2018

DEFAULT_DB_PORT=10001 на самом деле должен быть портом MySQL по умолчанию (3306), а не отображаемым на хосте портом (10001)

Разница хорошо объяснена здесь

...