django.db.utils.OperationalError: (2002, «Не удается подключиться к серверу MySQL на« db »(115)») - PullRequest
2 голосов
/ 24 октября 2019

Об этом уже спрашивали, но ни один из ответов мне не помог. Это моя конфигурация. Я запускаю docker-compose с двумя сервисами, веб-приложением в django и базой данных в mariadb. Я могу нормально подключиться к моей локальной базе данных с этой точной конфигурацией, только изменив хост в settings.py на localhost. Когда я запускаю docker-compose up, веб-служба останавливается сразу после попытки подключения к базе данных и возвращает эту ошибку.

django.db.utils.OperationalError: (2002, "Can't connect to MySQL server on 'db' (115)")

Dockerfile

FROM python:3.7

RUN mkdir /app

COPY requierments.txt /app/

WORKDIR /app

RUN pip install -r requierments.txt

COPY . /app/

docker-compose.yml

version: '3'

services:
  db:
    image: mariadb:10.2
    expose:
      - 3306
    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE: 'django_backend'
      MYSQL_USER: 'django'
      MYSQL_PORT: '3306'
      MYSQL_PASSWORD: 'mysql1234pass'
      MYSQL_ROOT_PASSWORD: 'password'

  web:
    build: .
    image: backendblockchain_web
    volumes:
      - .:/app
    ports:
      - "8000:8000"
    depends_on:
      - db
    links:
      - db
    command:
      - /bin/bash
      - -c
      - |
        sleep 10
        python3 manage.py migrate
        python3 manage.py runserver 0.0.0.0:8000

setting.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django_backend',
        'USER': 'django',
        'PASSWORD': 'mysql1234pass',
        'HOST': 'db',
        'PORT': '3306'
    }
}

Ответы [ 2 ]

3 голосов
/ 25 октября 2019

ваши WEB контейнеры запускаются до того, как БД запущена и работает, вам нужно дождаться его, используя один из этих методов , или сначала запустить вашу БД вручную с помощью docker-compose up db

2 голосов
/ 24 октября 2019

Убедитесь, что ваш образ докера БД работает нормально. Проверьте журналы работающего контейнера БД. Я могу успешно использовать MariaDB в моем файле docker-compose:

db:
image: mariadb
ports:
  - 3306:3306
environment:
  MYSQL_USER: "****"
  MYSQL_PASSWORD: "****"
  MYSQL_DATABASE: "*****"
  MYSQL_RANDOM_ROOT_PASSWORD: "yes"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...