You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同一Docker网络中Django容器无法连接MySQL容器求助

解决Docker Compose中Django容器无法解析MySQL服务的问题

核心原因及对应解决办法

1. MySQL服务未就绪时Django已启动

depends_on只是保证MySQL容器先启动,但MySQL第一次启动需要初始化数据库,这个过程需要时间。Django容器启动后立刻尝试连接,会因为MySQL服务未就绪导致连接失败,可能被误判为域名解析错误。

解决步骤:
给Django容器加个等待脚本,确保MySQL服务就绪后再启动后端服务。修改backend的command字段:

command: >
  sh -c "
    while ! nc -z mysql 3306; do
      sleep 1;
    done;
    gunicorn analytics_api.wsgi --bind 0.0.0.0:8001 --timeout 120 --workers 4
  "

注意:要确保Django镜像里安装了netcat,可以在Dockerfile中添加:

RUN apt-get update && apt-get install -y netcat-traditional

2. Django数据库配置的主机写错了

检查Django项目settings.py里的数据库配置,HOST必须是Compose中MySQL的服务名(mysql),或者你通过links映射的别名(database),绝对不能写localhost或127.0.0.1(这会让容器找自身的MySQL服务,而不是外部容器):

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': 'mysql',  # 也可以用links里的别名'database'
        'PORT': '3306',
    }
}

3. 移除过时的links配置

Docker Compose v2中,同一网络内的容器默认可以通过服务名直接通信,links是旧版配置,可能干扰DNS解析逻辑。直接删掉backend服务里的links字段即可:

# 删掉以下两行
# links:
#   - "mysql:database"

4. 手动验证容器内DNS解析

如果以上方法都无效,进入Django容器手动测试:

# 进入容器
docker exec -it analytics_api sh
# 测试DNS解析
nslookup mysql
# 测试连通性
ping mysql

如果nslookup能返回MySQL容器的IP,说明DNS正常,问题出在服务就绪或配置上;如果解析失败,尝试重启容器或重新创建网络。

优化后的docker-compose.yml示例

version: "3.8"

services:
  mysql:
    image: mysql
    restart: always
    env_file:
      - .env
    volumes:
      - db_data:/var/lib/mysql
    ports:
      - "3306:3306"

  backend:
    container_name: analytics_api
    build:
      context: .
    command: >
      sh -c "
        while ! nc -z mysql 3306; do
          sleep 1;
        done;
        gunicorn analytics_api.wsgi --bind 0.0.0.0:8001 --timeout 120 --workers 4
      "
    ports:
      - "8001:8001"
    depends_on:
      - mysql

volumes:
  db_data:
    driver: local

内容的提问来源于stack exchange,提问作者Muhammad Haris Yousaf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 05:36:37