【发布时间】:2020-10-09 11:53:05
【问题描述】:
我正在尝试在实时服务器上连接 mysql docker 容器,但它不工作
我的 docker-compose 文件是
db:
image: mysql:5.7
restart: always
env_file:
- ./app/app/.env
volumes:
- ./mysql-data:/var/lib/mysql
ports:
- "3302:3306"
和 我的 env 文件就像
MYSQL_PORT=3306
MYSQL_DATABASE=mydb
MYSQL_USER=root
MYSQL_PASSWORD=root
MYSQL_ROOT_PASSWORD=root
而我的 Django settings.py 是
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': mydb,
'USER': root,
'PASSWORD': root,
'HOST': db,
'PORT': 3306,
}
}
和gitlab CI 上的错误日志是
Creating test database for alias 'default'...
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/django/db/backends/base/base.py", line 216, in ensure_connection
self.connect()
File "/usr/local/lib/python3.6/site-packages/django/db/backends/base/base.py", line 194, in connect
self.connection = self.get_new_connection(conn_params)
File "/usr/local/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 227, in get_new_connection
return Database.connect(**conn_params)
File "/usr/local/lib/python3.6/site-packages/MySQLdb/__init__.py", line 130, in Connect
return Connection(*args, **kwargs)
File "/usr/local/lib/python3.6/site-packages/MySQLdb/connections.py", line 185, in __init__
super().__init__(*args, **kwargs2)
MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on 'db' (115)")
【问题讨论】:
-
你安装mysqlclient了吗?
-
@ViLuWi 我想是的,因为它在 requirment.txt 文件中为
mysqlclient==2.0.1 -
您的意思是指定端口 3302 吗? Django 也是在容器中运行还是直接在主机上运行?
-
@GregCowell 我已经编辑并添加了完整的 yml 文件。请看一下
-
您提到了 CI 设置,并且日志消息显示“测试数据库”;您显示的
docker-compose.yml文件是实际启动应用程序,还是其他?