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
相关产品推荐
相关产品推荐

