簡體   English   中英

如何在 docker 容器中使用帶有 odoo 的 VS 代碼調試器 [vs code + odoo + docker + mac]

[英]How to use VS code debugger with odoo in a docker container [vs code + odoo + docker + mac]

嗨,這有點類似於這個問題,但沒有關於 docker 容器的信息

我使用的是 Mac,所以我開始使用 docker,因為它在 macOS 上更方便 Microsoft Visual Studio 代碼可能具有完整的開發環境

它具有 MS Remote 的擴展 - 容器應該更容易

這是我的 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 時,如下圖所示: 在此處輸入圖像描述

並且您真正需要能夠調試的內容如下圖所示: 在此處輸入圖像描述

請注意區別:

  • 無需調試,您就有兩個端口,一個是內部端口,另一個是外部端口,它將 http 請求從瀏覽器傳遞到 Odoo,反之亦然。 但是在調試之后你有 4 個端口,其中 2 個用於 http 請求,另外 2 個用於調試信息(在我們的例子中基於 json)從 Vscode 到debugpy ,反之亦然(你也可以使用 2 個端口) .
  • 如果不調試您的入口點將是Dockerfile中定義的內容。 通過調試,您將入口點修改為debugpy 負責運行 Odoo

因此要調試 Odoo,您將執行以下操作:

  1. 編輯您的docker.dev文件並插入RUN pip3 install -U debugpy 這將安裝一個 python package debugpy而不是已棄用的一個ptvsd ,因為您的 vscode(本地)將使用它與您的 Z05B6053C41A21430AFD6ZZ 的 debugpy(遠程)服務器通信。

  2. 啟動你的容器。 您將啟動剛剛安裝 debugpy 的debugpy 它可能是來自您的 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
  1. 准備你的啟動器文件如下。 請注意, 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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM