Skip to content

Instantly share code, notes, and snippets.

@akhdaniel
Last active April 17, 2025 04:24
Show Gist options
  • Save akhdaniel/e65e6ae931f7c6eb904dc55938f789c5 to your computer and use it in GitHub Desktop.
Save akhdaniel/e65e6ae931f7c6eb904dc55938f789c5 to your computer and use it in GitHub Desktop.
Cara Live Debug Odoo Docker dengan VS Code

1 Setup Container

Install modul python debugpy di dalam container. Bisa dengan cara:

  1. rebuild image: dengan nambah entry RUN pip3 install debugpy
  2. execute di dalam contaner: pip3 install debugpy dan commit image

2 Edit odoo bin di dalam container

Khusus untuk debugging, kita perlu edit file executable odoo, misalnya di /usr/bin/odoo

#!/usr/bin/python3

# set server timezone in UTC before time module imported
__import__('os').environ['TZ'] = 'UTC'
import odoo
import debugpy
debugpy.wait_for_client()

if __name__ == "__main__":
    odoo.cli.main()

Tambahkan:

  1. import debugpy
  2. debugpy.wait_for_client() supaya odoo menunggu client debuging VS Code connect dulu

3 Commit image menjadi image debugging

Amankan image yang sudah di-setup menjadi image khusus debugging, lalu nanti edit docker-compose.yml agar memanggil image debugging ini.

Misalnya:

docker commit xxyyzzzaaa akhdaniel2/odoo:13.0-debug

dimana xxyyzzzaaa= yang didapat dari command docker ps

Setelah debugging selesai, jangan lupa balikkan lagi ke image yang non debugging supaya odoo jalan normal tanpa nunggu debugger connect.

4 Setup Docker Compose

Tambah:

  1. command untuk menjalankan modul python debugpy yang akan menjalankan /usr/bin/odoo
  2. membuka port debugging ke host misalnya 8888
version: '2'
services:
  web:
    image: odoo:13.0
    ports:
      - "8069:8069"
      - "8888:8888"
    environment:
    - HOST=db
    - USER=odoo
    - PASSWORD=odoo
    volumes:
      - ./config:/etc/odoo:delegated
      - ./addons:/mnt/extra-addons:delegated
    logging:
      options:
        max-size: "10m"
        max-file: "4"
    command: /usr/bin/python3 -m debugpy --listen 0.0.0.0:8888 /usr/bin/odoo --db_user=odoo --db_host=db --db_password=odoo

Note: jika hosting di AWS jangan lupa buka port inbound 8888 ke public agar bisa diakses oleh VS code di local computer.

3 Setup VS Code debugging

Tambahkan configurations di launch.json

  "configurations": [
    {
      "name": "Python: Remote Attach",
      "type": "python",
      "request": "attach",
      "connect": { 
          "host": "hostname.vitraining.com", 
          "port": 8888 },
      "pathMappings": [{ 
          "localRoot": "${workspaceFolder}/addons", 
          "remoteRoot": "/mnt/extra-addons",
          }]
    }
  ]

Lihat bagian connect:

  1. host = nama host atau IP docker odoo server
  2. port = port debugging misalnya 8888.

Bagian pathMappings:

  1. localRoot = folder tempat source code addons yg akan di debug di local computer, relative terhadap workspaceFolder, yaitu working folder kita di VS Code
  2. remoteRoot = folder tempat source code addon di server, biasanya start dari /mnt/extra-addons atau folder manapun yang menjadi root folder addon yang akan didebug

4 Cara Debugging

Setelah import debugpy di odoo bin, maka modul ini berlaku global di semua addon dan source code odoo. Untuk menghentikan jalannya program dan melakukan step by step debugging, tambahkan baris breakpoint() pada source code yang akan di debug.

Misalnya di addon stock, file stock_picking.py kita mau telusuri proses action_confirm()

    @api.multi
    def action_confirm(self):
        breakpoint()
        # call `_action_confirm` on every draft move
        self.mapped('move_lines')\
            .filtered(lambda move: move.state == 'draft')\
            ._action_confirm()
        ...
        ...

Ketika odoo sampai pada proses action_confirm maka VS code akan berhenti di situ dan kita bisa telusuri isi semua variable yang aktif di dalam method tersebut.

Happy debugging!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment