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

Docker Compose部署的MySQL无法连接Django问题求助

解决步骤

1. 修正Docker Compose配置

你的docker-compose.yml存在两个核心问题:

  • MySQL容器未暴露端口,导致本地Django无法访问
  • Adminer端口映射错误,占用了MySQL默认的3306端口

修改后的配置如下:

version: '3.1'

services:
  db:
    image: mysql
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: db-1  # 容器启动时自动创建指定数据库
    ports:
      - "3306:3306"  # 将容器3306端口映射到本地3306

  adminer:
    image: adminer
    restart: always
    ports:
      - "3308:8080"  # Adminer默认使用8080端口,映射到本地3308避免冲突

2. 重启Docker服务

执行命令重新构建并启动容器:

docker-compose down
docker-compose up -d

3. 验证数据库创建状态

通过CLI登录MySQL:

mysql -h 127.0.0.1 -u root -p

输入密码example后,执行show databases;,此时应该能看到db-1数据库。

4. 确认Django配置及依赖

  • 确保已安装MySQL驱动:执行pip install mysqlclient;若使用pymysql,需在项目根目录的__init__.py中添加以下代码:
    import pymysql
    pymysql.install_as_MySQLdb()
    
  • 你的DATABASE配置无需修改,确认HOST: '127.0.0.1'和PORT: '3306'与容器映射一致即可。

5. 测试Django连接

再次执行命令验证:

python manage.py check --database default

内容的提问来源于stack exchange,提问作者Joe Needham

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:10:20