gpt4 book ai didi

macos - 如何在Docker容器中的odoo中使用VS代码调试器[vs代码+ odoo + docker + mac]

转载 作者:行者123 更新时间:2023-12-02 19:18:28 26 4
gpt4 key购买 nike

嗨,这有点类似于this question,但是关于docker容器一无所获
我使用的是Mac,所以我开始使用docker,因为它在macOS上更方便
Microsoft Visual Studio代码可能具有完整的开发环境
它具有MS Remote - Containers的扩展名,应该会更容易
这是我的docker-compose.yml

version: '2'
services:
db:
image: 'postgres:11'
environment:
- POSTGRES_PASSWORD=odoo
- POSTGRES_USER=odoo
- POSTGRES_DB=postgres
restart: always
volumes:
- './postgresql:/var/lib/postgresql/data'
pgadmin:
image: dpage/pgadmin4
depends_on:
- db
ports:
- '5555:80'
environment:
PGADMIN_DEFAULT_EMAIL: pgadmin4@pgadmin.org
PGADMIN_DEFAULT_PASSWORD: admin
volumes:
- './pgadmin:/var/lib/pgadmin'
odoo13:
image: 'odoo:13'
depends_on:
- db
ports:
- '10013:8069'
tty: true
command: '-- --dev=reload'
volumes:
- './addons:/mnt/extra-addons'
- './enterprise:/mnt/enterprise-addons'
- './config:/etc/odoo'
restart: always

您能否提供帮助或分享在Mac上使用调试器运行odoo的更好方法?
先感谢您

最佳答案

为了了解remote debugging如何适用于所有基于python的服务或应用(例如Odoo,Flask,Django,Web2py等)。您必须了解Docker容器,调试器,python应用服务器(在我们的情况下为Odoo)这三个不同的概念。因此,在许多情况下,从docker运行Odoo时,如下图所示:
enter image description here
而您真正需要进行调试的内容将如下图所示:
enter image description here
请注意区别:

  • 无需调试即可拥有两个端口,一个内部端口,另一个内部端口,它将通过浏览器将HTTP请求传递给Odoo,反之亦然。但是,在调试之后,您有4个端口,其中2个用于http请求,另外2个用于调试信息(在本例中基于json),从Vscode到debugpy,反之亦然(您也可以使用2个端口) 。
  • 无需调试入口点的
  • 将是Dockerfile中定义的内容。通过调试,您可以将入口点修改为debugpy。这将负责运行Odoo

  • 因此,要调试Odoo,您将执行以下操作:
  • 编辑您的docker.dev文件并插入RUN pip3 install -U debugpy。这将安装python软件包debugpy而不是已弃用的一个ptvsd,因为您的vscode(本地)将使用它与docker镜像的debugpy(远程)服务器通信。
  • 启动您的容器。您将启动刚刚安装了debugpy的python软件包。它可能是您shell中的下一个命令。

  • docker-compose run --rm -p 8888:8888 -p 8869:8069 {DOCKER IMAGE[:TAG|@DIGEST]} /usr/bin/python3 -m debugpy --listen 0.0.0.0:8888 /usr/bin/odoo --db_user=odoo --db_host=db --db_password=odoo
  • 如下准备启动器文件。请注意port将与odoo服务器相关。 debugServer将是调试服务器
  • 的端口

    {
    "name": "Odoo: Attach",
    "type": "python",
    "request": "attach",
    "port": 8869,
    "debugServer": 8888,
    "host": "localhost",
    "pathMappings": [
    {
    "localRoot": "${workspaceFolder}",
    "remoteRoot": "/mnt/extra-addons",
    }
    ],
    "logToFile": true
    }

    关于macos - 如何在Docker容器中的odoo中使用VS代码调试器[vs代码+ odoo + docker + mac],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61847848/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com