django.db.utils.OperationalError:(2002年,“无法通过套接字'/var/run/mysqld/mysqld.sock'(2)连接到本地MySQL服务器”)

时间:2020-07-29 07:55:31

标签: mysql django docker docker-compose containers

我创建了一个django应用程序,并使用mysql作为数据库后端。一切在我的本地计算机上都运行良好,因此我尝试将这个应用程序进行docker化。而且我已经编写了下面提到的代码以对我的应用程序进行泊坞窗。

docker-compose.yml

version: '3'

services:
  mysql:
    image: mysql:latest
    command: --default-authentication-plugin=mysql_native_password
    ports:
      - '3306:3306'
    environment:
      MYSQL_DATABASE: 'cool_db'
      MYSQL_ROOT_PASSWORD: 'hello@123*'
    container_name: mysql01
    restart: always
  web:
    build: .
    container_name: django01
    command: bash -c "python3 manage.py makemigrations && python3 manage.py migrate && python3 manage.py collectstatic --noinput && python3 manage.py runserver 0.0.0.0:8000"
    volumes: 
    - my-vol:/src
    ports:
      - "8000:8000"
    links:
      - mysql
    depends_on: 
      - mysql
    expose:
      - "8000"
    restart: always

volumes: 
  my-vol:

Dockerfile

FROM python:latest

ENV PYTHONUNBUFFERED 1

RUN mkdir /src 
WORKDIR /src/

COPY ./requirements.txt /src/requirements.txt
RUN pip install -r /src/requirements.txt

COPY . /src/

EXPOSE 8000

requirements.txt

autopep8==1.5.2
boto3==1.14.7
celery==3.1.24
channels==2.4.0
channels-redis==2.4.2
configparser==5.0.0
django==3.0.3
djangorestframework==3.11.0
mysqlclient==1.4.6
pre-commit==2.2.0
redis==2.10.6
requests==2.23.0
WhiteNoise==5.1.0

settings.py

DATABASES = {
    "default": {
        "ENGINE": config.get("database", "DATABASE_ENGINE"),
        "NAME": config.get("database", "DATABASE_NAME"),
        "USER": config.get("database", "DATABASE_USER"),
        "PASSWORD": config.get("database", "DATABASE_PASSWORD"),
        "HOST": config.get("database", "DATABASE_HOST"),
        "PORT": config.get("database", "DATABASE_PORT"),
    }
}

config.cfg

[database]
DATABASE_USER: root
DATABASE_PASSWORD: hello@123
DATABASE_HOST: mysql
DATABASE_PORT: 3306
DATABASE_ENGINE: django.db.backends.mysql
DATABASE_NAME: cool_db

但是当我使用sudo docker-compose up运行此代码时,我的django服务无法与mysql服务连接并引发此错误 django.db.utils.OperationalError:(2002,“无法连接至本地通过套接字'/var/run/mysqld/mysqld.sock'(2)的MySQL服务器”) 尽管mysql也正在我的系统上运行,但我还是使用sudo docker ps对其进行了验证。它列出了2个容器正在运行,Mysql容器正在运行,没有任何问题,但是django容器由于提到的错误而一次又一次地以相同的错误重新启动。

0 个答案:

没有答案