我正在尝试将我的 django 文件容器化,但我一直遇到以下问题:(2006, 'Can\'t connect to local MySQL server through socket\'/var/run/mysqld/mysqld. sock\' (2 “没有那个文件或目录”)
后来发现mysql.sock在这个位置:/tmp/mysql.sock
而不是/var/run/mysqld/mysqld.sock
,怎么办我更改了 docker 的位置以查看 /tmp/mysql.sock
这是我的 docker-composr.yml:
version: '3'
services:
db:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: somepassword
adminer:
image: adminer
restart: always
ports:
- 8080:8080
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
我已按照 mysql docker 网站上的说明将 mysql 实例链接到容器
编辑:我读到另一个与此类似的堆栈溢出,我将我的 Django 代码更改为 DATABASES
中的 'HOST': '127.0.0.1'
现在我得到:(2006, 'Can\'t connect to MySQL server on\'127.0.0.1\' (111 "Connection refused")')
最佳答案
你的主机应该是db。使用 docker-compose 时,您可以通过服务名称对不同的服务器进行寻址。
因此,在 settings.py 中,您应该:
DATABASES = {
'default': {
'HOST': 'db',
...
}
}
关于mysql - 不同位置的 Docker django mysql.sock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53748145/