Django не может подключиться к контейнеру MySQL?

#mysql #django #docker #docker-compose

#mysql #django #docker #docker-compose

Вопрос:

У меня есть docker-compose, как показано ниже:

 version: '3'
services:
  mysql:
    image: mysql
    ports:
      - 3306:3306
    env_file: ./src/.environment
    volumes:
      - mysql_data:/var/lib/mysql
  web:
    build:
      context: ./src
      dockerfile: Dockerfile
    command: bash -c "python manage.py collectstatic --no-input amp;amp; python manage.py makemigrations --no-input amp;amp; python manage.py migrate --no-input"
    env_file: ./src/.environment
    ports:
      - 8001:8001
    depends_on:
      - mysql
    volumes:
      - ./src:/var/www/project/src
      - staticfiles:/var/www/project/src/statics
 

. содержимое среды следующим образом:

 DATABASE_MYSQL_NAME=dataCollection
DATABASE_MYSQL_HOST=mysql
DATABASE_MYSQL_USER=user1
DATABASE_MYSQL_PASSWORD=user123456
DATABASE_MYSQL_PORT=3306
 

Затем в настройках django я должен следовать конфигурации базы данных:

 DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': os.getenv('DATABASE_MYSQL_NAME'),
            'HOST': os.getenv('DATABASE_MYSQL_HOST'),
            'USER': os.getenv('DATABASE_MYSQL_USER'),
            'PASSWORD': os.getenv('DATABASE_MYSQL_PASSWORD'),
            'PORT': os.getenv('DATABASE_MYSQL_PORT'),
        }
    }
 

Но при запуске docker-comose up он выдает следующую ошибку:

 MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on 'mysql' (115)")
 

Я не знаю, в чем проблема?

Комментарии:

1. Если вы запустите docker-compose up -d , подождите 30-60 секунд и снова запустите ту же команду, сработает ли она во второй раз? Есть ли другие интересные вещи в журналах создания?

2. @DavidMaze Когда я запускаю docker-compose down , а затем docker-compose up выдает эту ошибку в первый раз. Но после этого я нажимаю Ctrl c , и тогда docker-compose up это работает. это странно!!

3. @DavidMaze не имеете ни малейшего представления?