构建 docker-compose 映像时无法连接到 MySQL

Evg*_*ova 5 python mysql django docker docker-compose

我有 docker-compose 的配置,在构建数据库步骤中,django 管理抛出错误:

django.db.utils.OperationalError:(2002,“无法连接到'127.0.0.1'(115)上的MySQL服务器”)

我认为 - 码头工人拒绝连接。

通过套接字进行的配置类似不起作用(说error connection by socket

Docker 撰写文件

version: '3'
services:
  db:
    image: mariadb:5.5
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: "root"
      MYSQL_DATABASE: "bh"
      MYSQL_USER: "root"
      MYSQL_PASSWORD: "root"
    ports:
      - "3302:3306"


  behealthy_dev:
    build: .
    container_name: behealthy_dev
    expose:
      - "86"
    command: python manage.py runserver 0.0.0.0:80
    volumes:
      - /behealthy_dev/
    ports:
      - "86:86"
    depends_on:
      - db

Run Code Online (Sandbox Code Playgroud)

Dockerfile

FROM python:3.6
ENV PYTHONUNBUFFERED 1
RUN mkdir /behealthy_dev
WORKDIR /behealthy_dev
ADD requirements.txt /behealthy_dev/
RUN pip install -r requirements.txt
ADD . /behealthy_dev/
RUN python manage.py makemigrations
RUN python manage.py migrate
RUN python manage.py collectstatic --noinput
Run Code Online (Sandbox Code Playgroud)

数据库设置(设置)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'bh',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'USER': 'root',
        'PASSWORD': 'root',
        'OPTIONS': {
            'sql_mode': 'traditional',
            'init_command': 'SET innodb_strict_mode=1',
            'charset': 'utf8mb4',
        },

    },
}
Run Code Online (Sandbox Code Playgroud)

有什么解决办法吗?我尝试从其他堆栈答案中解决,但它对我不起作用。

sad*_*k-f 2

在您的服务中behealthy_dev更改 MySQL 主机

'HOST': '127.0.0.1'
Run Code Online (Sandbox Code Playgroud)

'HOST': 'db',
Run Code Online (Sandbox Code Playgroud)

编辑:也将其更改MYSQL_ROOT_PASSWORD: "root"为:

`MYSQL_ROOT_PASSWORD: "rootpassword"`
Run Code Online (Sandbox Code Playgroud)

以及您的数据库设置:

'PASSWORD': 'rootpassword',
Run Code Online (Sandbox Code Playgroud)