到目前为止,我已经尝试了一切我能在互联网上找到-但似乎没有任何帮助。
这是我的docker-compose.yml文件:
version: '3.3'
services:
ivs_fraud:
build:
context: .
args:
GIT_SSH_KEY: ${GIT_SSH_KEY}
image: ivs_fraud:latest
container_name: fraud
depends_on:
- ivsdb
links:
- ivsdb
networks:
- database_network
networks:
database_network:
driver: bridge
我有一个到ivsdb服务的链接/依赖关系,它在另一个docker-compose-dev.yml文件中定义:
version: '3.3'
services:
ivsdb:
image: mysql
container_name: ivsdb
networks:
- database_network
ports:
- ${DEFAULT_DB_PORT}:3306
restart: always
environment:
MYSQL_DATABASE: ${DEFAULT_DB_NAME}
MYSQL_USER: ${DEFAULT_DB_USER}
MYSQL_PASSWORD: ${DEFAULT_DB_PASS}
MYSQL_ROOT_PASSWORD: ${DEFAULT_DB_ROOT_PASS}
这是我的.env文件(django读取这个.env文件并根据它创建一个连接):
DEFAULT_DB_NAME=ivsdb
DEFAULT_DB_HOST=ivsdb
DEFAULT_DB_PORT=10001
DEFAULT_DB_USER=root
DEFAULT_DB_PASS=root
DEFAULT_DB_ROOT_PASS=root
我不断得到:
(2003,'无法连接到'ivsdb'上的mysql服务器(111“连接被拒绝”)')
我尝试了几个修改,但都没有成功:
将所有内容移到一个docker compose文件中
彻底摆脱“网络”进入
将主机更改为 ivsdb / 127.0.0.1 / localhost / 0.0.0.0
有用的东西:
djago服务运行良好
mysql服务运行良好。
我可以使用命令行连接到它:
mysql -uroot -proot -P10001 --protocol=tcp
或
mysql -uroot -proot -P10001 -h127.0.0.1 (IP adress enforces tcp protocol)
看起来django在连接mysql容器时遇到了一些困难。但从“拒绝连接”判断,django可以访问mysql容器。
我错过了什么?
1条答案
按热度按时间lawou6xi1#
DEFAULT_DB_PORT=10001
实际上应该是mysql的默认端口(3306),而不是主机Map端口(10001)这里很好地解释了这种区别