我无法在Docker容器中调试Odoo。
我正在使用Visual Studio Code,并且有以下launch.json配置。
{
"version": "0.2.0",
"configurations": [
{
"name": "Odoo 12",
"type": "python",
"request": "launch",
"stopOnEntry": false,
"pythonPath": "${config:python.pythonPath}",
"program": "/usr/bin/odoo",
"args": [
"--config=/etc/odoo/odoo.conf"
]
}
]
}
每当我启动调试器时,都会出现这个错误:
Exception in thread odoo.service.httpd:
Traceback (most recent call last):
File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
self.run()
File "/usr/lib/python3.5/threading.py", line 862, in run
self._target(*self._args, **self._kwargs)
File "/usr/lib/python3/dist-packages/odoo/service/server.py", line 410, in http_thread
self.httpd = ThreadedWSGIServerReloadable(self.interface, self.port, app)
File "/usr/lib/python3/dist-packages/odoo/service/server.py", line 136, in __init__
handler=RequestHandler)
File "/usr/lib/python3/dist-packages/werkzeug/serving.py", line 476, in __init__
HTTPServer.__init__(self, (host, int(port)), handler)
File "/usr/lib/python3.5/socketserver.py", line 440, in __init__
self.server_bind()
File "/usr/lib/python3/dist-packages/odoo/service/server.py", line 151, in server_bind
super(ThreadedWSGIServerReloadable, self).server_bind()
File "/usr/lib/python3.5/http/server.py", line 138, in server_bind
socketserver.TCPServer.server_bind(self)
File "/usr/lib/python3.5/socketserver.py", line 454, in server_bind
self.socket.bind(self.server_address)
OSError: [Errno 98] Address already in use
有人知道我的调试配置出了什么问题吗?
谢谢!
更新
也许需要更多的信息。我用docker-compose文件启动odoo服务器,然后用VSCode远程连接到该odoo服务器。使用odoo-bin命令重新启动服务器,并在VSCode终端中运行,一切都正常。
我有两个正在运行的docker容器:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4ac4a4c8481f odoo:12.0 "/entrypoint.sh odoo…" 7 days ago Up 4 minutes 0.0.0.0:8069->8069/tcp, 8071/tcp odoo-docker_web_1
5910cce38985 postgres:10 "docker-entrypoint.s…" 7 days ago Up 4 minutes 5432/tcp odoo-docker_db_1
仅有Odoo服务器运行在8069端口:
odoo@4ac4a4c8481f:/mnt/extra-addons$ lsof -i :8069
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
python3 1 odoo 7u IPv4 44986 0t0 TCP *:8069 (LISTEN)
我可能错了,使用“launch”请求类型是错误的,因为它试图重新启动服务器。我也测试过这个配置:
{
"name": "Odoo 12 Attach",
"type": "python",
"request": "attach",
"port": 8069,
"host": "localhost",
},
但是调试器会立即终止而不显示错误消息。