django.db.utils.OperationalError: (2002, "无法连接到 MySQL 服务器上的 'db' (115)") 总是得到这个错误

时间:2021-04-15 09:10:55

标签: mysql django docker

Windows 10

Dockerfile:-

FROM python:3.8

ENV PYTHONUNBUFFERED 1

COPY ./requirements.txt /requirements.txt
RUN apt-get install default-libmysqlclient-dev
RUN pip install -r requirements.txt
RUN pip install mysqlclient

RUN mkdir /app
WORKDIR /app
COPY ./app /app

docker-compose.yml :-

version: "3"

services:
  app:
    build:
      context: .
    ports:
      - "8000:8000"
    volumes:
      - ./app:/app
      - /tmp/app/mysqld:/run/mysqld
    command: >
      sh -c "python manage.py wait_for_db &&
             python manage.py migrate &&
             python manage.py runserver 0.0.0.0:8002"
    depends_on:
      - db
    links:
      - db

  db:
    image: mysql:8
    restart: always
    ports:
      - "3306:3306"
    environment:
      - MYSQL_DATABASE='music'
      - MYSQL_USER='music'
      - MYSQL_PASSWORD='music'
      - MYSQL_ROOT_PASSWORD='rootmusic'
    volumes:
      - /tmp/app/mysqld:/var/run/mysqld
      - ./db:/var/lib/mysql

requirements.txt :-

Django>=2.1.3,<2.2.0
djangorestframework>=3.9.0,<3.10.0
pymysql
mysqlclient==1.4.6
django-mysql==3.4.0

Django-settings.py :-

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': os.environ.get("MYSQL_DATABASE"),
        'USER': os.environ.get("MYSQL_USER"),
        'PASSWORD': os.environ.get("MYSQL_PASSWORD"),
        'HOST': 'db',
        'PORT': '3306',
    }
}

使用命令 docker-compose up 时出现错误 django.db.utils.OperationalError: (2002, "Can't connect to MySQL server on 'db' (115)")

在 django 主机中使用 - '127.0.0.1' 也尝试使用 'localhost'。但同样的错误再次出现。

只是使用 Docker 来运行我的 django-mysql 应用程序。不确定是否涉及套接字以及如何。

自过去两天以来,我一直在寻找解决方案。请帮忙。

0 个答案:

没有答案