【发布时间】:2020-02-03 20:29:26
【问题描述】:
我正在尝试使用 Docker 对我的 Django 应用程序进行 docker 化,但由于我对 Docker 并没有真正的经验,因此在连接 mysql 数据库时遇到了一些问题。我有几个问题:
我已经在我的计算机上安装了 mysql 并在本地设置了数据库,我是否也必须使用 mysql 映像并在我的 docker-compose 中创建一个 db 服务? Django 不应该像没有 dockerized 时那样正常连接到 mysql 吗?
如果数据库托管在服务器上,那么 mysql 是否安装在该服务器上?我必须使用 mysql 映像连接到数据库吗?
这是我的 docker-compose.yml:
version: '3.7'
services:
web:
build: ./appchat
command: python appchat/manage.py runserver
ports:
- 8000:8000
- "3306"
network_mode: "host"
这里是settings.py中的数据库设置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'USER': 'root',
'PASSWORD': 'root',
'NAME': 'company',
'PORT': '3306',
}
}
这是我运行 docker-compose 文件时的错误:
django.db.utils.OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)")
任何帮助将不胜感激。谢谢。
【问题讨论】:
-
尝试使用
host.docker.internal连接django容器内的mysql -
我在 settings.py 中尝试了 'HOST': 'host.docker.internal',仍然出现同样的错误。
标签: mysql django docker docker-compose