我正在尝试将我的django文件打包,但我一直遇到以下问题: (2006, ’Can\‘t connect to local MySQL server through socket \‘/var/run/mysqld/mysqld.sock\’ (2 “No such file or directory”)
我后来发现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代码改为 'HOST': '127.0.0.1'
在 DATABASES
现在我得到: (2006, 'Can\'t connect to MySQL server on \'127.0.0.1\' (111 "Connection refused")')
2条答案
按热度按时间5kgi1eie1#
如果要连接到容器内外的容器化mysql服务器,首先需要确保端口Map到主机上:
这将允许您使用
localhost
或者127.0.0.1
直接在主机上。如果你想在这两种情况下都能运行django
web
在主机上,您需要重写DATABASES
设置取决于场景。这个web
容器将需要使用HOST
的价值db
,而您的本地计算机将需要值localhost
.pes8fvy92#
你的主机应该是db。当使用docker compose时,您可以通过服务名称为不同的服务器寻址。
因此,在settings.py中,您应该: