在我的情况下,我没有准备好连接到外部网络的 VPN 连接。我不知道 Linux 下的“网络设置”会在每次计算机重启后将 VPN 连接切换到 off。
然后我得到了类似的错误:
$docker-compose up
Recreating MYCONTAINER ... done
Attaching to MYCONTAINER
MYDOCKERCOMPOSESERVICE_1 | 2022-01-14 10:56:30,045 [INFO]: Connecting to DB ...
MYDOCKERCOMPOSESERVICE_1 | Traceback (most recent call last):
MYDOCKERCOMPOSESERVICE_1 | File "/usr/lib/python3.9/runpy.py", line 197, in _run_module_as_main
MYDOCKERCOMPOSESERVICE_1 | return _run_code(code, main_globals, None,
MYDOCKERCOMPOSESERVICE_1 | File "/usr/lib/python3.9/runpy.py", line 87, in _run_code
MYDOCKERCOMPOSESERVICE_1 | exec(code, run_globals)
MYDOCKERCOMPOSESERVICE_1 | File "/MYDOCKERCOMPOSESERVICE/main.py", line 265, in <module>
MYDOCKERCOMPOSESERVICE_1 | main()
MYDOCKERCOMPOSESERVICE_1 | File "/MYDOCKERCOMPOSESERVICE/main.py", line 244, in main
MYDOCKERCOMPOSESERVICE_1 | MYSERVER_conn = create_connection(MYSERVER_CONNECTION)
MYDOCKERCOMPOSESERVICE_1 | File "/MYDOCKERCOMPOSESERVICE/main.py", line 65, in create_connection
MYDOCKERCOMPOSESERVICE_1 | conn = MySQLdb.connect(cursorclass=cursors.DictCursor, charset="utf8",
MYDOCKERCOMPOSESERVICE_1 | File "/usr/local/lib/python3.9/dist-packages/MySQLdb/__init__.py", line 123, in Connect
MYDOCKERCOMPOSESERVICE_1 | return Connection(*args, **kwargs)
MYDOCKERCOMPOSESERVICE_1 | File "/usr/local/lib/python3.9/dist-packages/MySQLdb/connections.py", line 185, in __init__
MYDOCKERCOMPOSESERVICE_1 | super().__init__(*args, **kwargs2)
MYDOCKERCOMPOSESERVICE_1 | MySQLdb._exceptions.OperationalError: (2005, "Unknown MySQL server host 'MYSERVER' (-3)")
MYDOCKERCOMPOSESERVICE_1 | (2005, "Unknown MySQL server host 'MYSERVER' (-3)")
MYCONTAINER exited with code 1
这里-3,在问题-2中,我猜这些只是连接对象的参数中的位置。在我的情况下,与 db 的连接是不可能的,我再次在容器的 bash 中对其进行了测试,在命令行上使用 mysql。
解决方法:再次打开VPN,就可以建立连接了:
如果上述方法没有帮助,您还可以检查您的端口 3306 是否已被另一个容器使用 (docker ps -a)。如果是这样,请尝试 ports: -"3307:3306" 或其他端口。这只是我在它运行之前所做的一个步骤,尽管我认为它与所讨论的错误无关。我仍然不能确定这是否也没有解决问题。