python - django.db.utils.OperationalError : (2002, "Can' t 连接到 'db' (115)"上的 MySQL 服务器"

标签 python django docker docker-compose mariadb

这已经被问过了,但没有一个答案对我有帮助。这是我的配置。我正在运行带有两个服务的 docker-compose,一个是 django 中的 Web 应用程序,另一个是 mariadb 中的数据库。我可以使用这个确切的配置正常连接到我的本地数据库,只需将 settings.py 中的主机更改为本地主机。当我运行 docker-compose up 时,Web 服务在尝试连接到数据库后立即停止,并返回此错误。

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

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

设置.py

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

最佳答案

您的 WEB 容器在数据库启动并运行之前启动,您需要使用其中之一等待它 methods或者首先使用 docker-compose up db

手动启动您的数据库

关于python - django.db.utils.OperationalError : (2002, "Can' t 连接到 'db' (115)"上的 MySQL 服务器",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58547120/

相关文章:

python - 如何解决 "GeoDataFrame object has not attribute..."错误

python - 属性错误: 'unicode' object has no attribute '_meta'

python - Django 结果返回绝对 URL

django - update_or_create 不更新/创建对象

Azure IoT Edge 部署文件已更新但已删除 docker 容器仍保持运行

scala - 如何在发布过程中通过sbt-release推送/构建docker镜像

python - 分组并填充缺失的日期时间值

python - 数据框中所有值的频率分布

amazon-web-services - EROFS:一天后在EBS上运行puppeteer时的只读文件系统

python - 如何在pyspark数据框中转换 "DD/MM/YYYY"格式的日期?