{"id":1975,"date":"2025-04-25T04:26:01","date_gmt":"2025-04-25T04:26:01","guid":{"rendered":"https:\/\/havari.me\/?p=1975"},"modified":"2025-05-02T06:48:51","modified_gmt":"2025-05-02T06:48:51","slug":"odoo-debug-useing-vscode-and-docker-steps","status":"publish","type":"post","link":"https:\/\/havari.me\/en\/odoo\/odoo-debug-useing-vscode-and-docker-steps\/","title":{"rendered":"A step-by-step guide to creating a development and debugging environment for Odoo using Docker and vscode"},"content":{"rendered":"<div dir=\"ltr\">\n<style>\n\/* WordPress-style code block styling with syntax highlighting *\/\n.wp-block-code {\n    background: #1e1e1e;\n    color: #d4d4d4;\n    padding: 16px;\n    border-radius: 8px;\n    font-family: 'Consolas', 'Monaco', monospace;\n    font-size: 14px;\n    overflow-x: auto;\n    margin: 1em 0;\n    border: 1px solid #3c3c3c;\n}<\/p>\n<p>\/* Syntax highlighting for code blocks *\/\n.wp-block-code code {\n    display: block;\n}<\/p>\n<p>\/* Bash syntax *\/\n.wp-block-code.bash code {\n    color: #d4d4d4;\n}\n.wp-block-code.bash .keyword { color: #569cd6; } \/* e.g., echo, mkdir *\/\n.wp-block-code.bash .string { color: #ce9178; } \/* e.g., quoted strings *\/\n.wp-block-code.bash .comment { color: #6a9955; } \/* e.g., # comments *\/\n.wp-block-code.bash .variable { color: #9cdcfe; } \/* e.g., $HOME *\/<\/p>\n<p>\/* YAML syntax *\/\n.wp-block-code.yaml code {\n    color: #d4d4d4;\n}\n.wp-block-code.yaml .key { color: #9cdcfe; } \/* e.g., service names, keys *\/\n.wp-block-code.yaml .string { color: #ce9178; } \/* e.g., quoted values *\/\n.wp-block-code.yaml .number { color: #b5cea8; } \/* e.g., version numbers *\/<\/p>\n<p>\/* JSON syntax *\/\n.wp-block-code.json code {\n    color: #d4d4d4;\n}\n.wp-block-code.json .key { color: #9cdcfe; } \/* e.g., JSON keys *\/\n.wp-block-code.json .string { color: #ce9178; } \/* e.g., JSON strings *\/\n.wp-block-code.json .comment { color: #6a9955; } \/* e.g., JSON comments *\/<\/p>\n<p>\/* General styling for content *\/\n.wp-block-group {\n    margin-bottom: 2em;\n}\n.wp-block-group h2 {\n    color: #333;\n    font-size: 1.8em;\n    margin-bottom: 0.5em;\n}\n.wp-block-group h3 {\n    color: #444;\n    font-size: 1.4em;\n    margin-bottom: 0.5em;\n}\n.wp-block-group p, .wp-block-group ul {\n    color: #555;\n    line-height: 1.6;\n}\n.wp-block-group ul li {\n    margin-bottom: 0.5em;\n}\n.wp-block-group a {\n    color: #0073aa;\n    text-decoration: none;\n}\n.wp-block-group a:hover {\n    text-decoration: underline;\n}\n<\/style>\n<div class=\"wp-block-group\">\n<h2>Setting Up Up Odoo with Docker and VSCode<\/h2>\n<p>This guide provides a step-by-step process to set up and debug Odoo using Docker and Visual Studio Code (VSCode).<\/p>\n<\/div>\n<div class=\"wp-block-group\">\n<h2>1. Prerequisites<\/h2>\n<h3>Install Required Tools<\/h3>\n<ul>\n<li><strong>Docker<\/strong>: Install from the <a href=\"https:\/\/www.docker.com\/get-started\">official Docker installation page<\/a>.<\/li>\n<li><strong>Git<\/strong>: Install using the appropriate guide for your operating system.<\/li>\n<li><strong>Linux Users<\/strong>: Add your user to the Docker group to run commands without <code>sudo<\/code>:\n<pre class=\"wp-block-code bash\"><code><span class=\"keyword\">sudo<\/span> <span class=\"keyword\">usermod<\/span> -a -G docker <span class=\"variable\">&lt;your_username&gt;<\/span><\/code><\/pre>\n<\/li>\n<\/ul>\n<\/div>\n<div class=\"wp-block-group\">\n<h2>2. Create Directory Structure<\/h2>\n<p>Run the following command to create the required directory structure:<\/p>\n<pre class=\"wp-block-code bash\"><code><span class=\"keyword\">echo<\/span> -e <span class=\"string\">\"\\n=== Creating Directory Structure ===\"<\/span>\n<span class=\"keyword\">mkdir<\/span> -p <span class=\"variable\">$HOME<\/span>\/odoo\n<span class=\"keyword\">mkdir<\/span> -p <span class=\"variable\">$HOME<\/span>\/odoo\/14.0\/src\n<span class=\"keyword\">mkdir<\/span> -p <span class=\"variable\">$HOME<\/span>\/odoo\/14.0\/src\/odoo\n<span class=\"keyword\">mkdir<\/span> -p <span class=\"variable\">$HOME<\/span>\/odoo\/14.0\/src\/enterprise  <span class=\"comment\"># optional<\/span>\n<span class=\"keyword\">mkdir<\/span> -p <span class=\"variable\">$HOME<\/span>\/odoo\/varlib\n<span class=\"keyword\">mkdir<\/span> -p <span class=\"variable\">$HOME<\/span>\/odoo\/shared_postgres_data<\/code><\/pre>\n<p>The structure includes:<\/p>\n<ul>\n<li><strong>Root Directory<\/strong>: <code>$HOME\/odoo<\/code><\/li>\n<li><strong>Version-Specific Directories<\/strong> (e.g., for Odoo 14.0): <code>$HOME\/odoo\/14.0<\/code><\/li>\n<li><strong>Source Code Directories<\/strong>:\n<ul>\n<li><code>$HOME\/odoo\/14.0\/src\/odoo<\/code><\/li>\n<li><code>$HOME\/odoo\/14.0\/src\/enterprise<\/code> (optional)<\/li>\n<\/ul>\n<\/li>\n<li><strong>Filestore Directory<\/strong>: <code>$HOME\/odoo\/varlib<\/code><br \/>Ensure the containerized Odoo has write access to this directory.<\/li>\n<li><strong>Postgres Data Directory<\/strong>: <code>$HOME\/odoo\/shared_postgres_data<\/code><\/li>\n<li><strong>Tutorial Files<\/strong>: Clone the tutorial repository:\n<pre class=\"wp-block-code bash\"><code><span class=\"keyword\">cd<\/span> <span class=\"variable\">$HOME<\/span>\/odoo &amp;&amp; <span class=\"keyword\">git<\/span> clone https:\/\/github.com\/Pro-Tech777\/Docker-Odoo-Debug-Developer-Environment.git docker-odoo-debug<\/code><\/pre>\n<\/li>\n<\/ul>\n<\/div>\n<div class=\"wp-block-group\">\n<h2>3. Set Up Database Server<\/h2>\n<p>Run a Postgres container for Odoo:<\/p>\n<pre class=\"wp-block-code bash\"><code><span class=\"keyword\">docker<\/span> run -d \\\n   -e <span class=\"variable\">POSTGRES_USER<\/span>=odoo \\\n   -e <span class=\"variable\">POSTGRES_PASSWORD<\/span>=odoo \\\n   -e <span class=\"variable\">POSTGRES_DB<\/span>=postgres \\\n   -e <span class=\"variable\">PGDATA<\/span>=\/var\/lib\/postgresql\/data\\\n   --shm-size=1g \\\n   --restart always \\\n   -v <span class=\"variable\">$HOME<\/span>\/odoo\/shared_postgres_data:\/var\/lib\/postgresql\/data\\\n   -p 5432:5432 \\\n   --name db-shared postgres:14<\/code><\/pre>\n<p>Alternatively, use Docker Compose for the database stack:<\/p>\n<pre class=\"wp-block-code yaml\"><code><span class=\"key\">version<\/span>: <span class=\"string\">'3.8'<\/span>\n<span class=\"key\">services<\/span>:\n  <span class=\"key\">db-shared<\/span>:\n    <span class=\"key\">image<\/span>: <span class=\"string\">postgres:14<\/span>\n    <span class=\"key\">container_name<\/span>: <span class=\"string\">db-shared<\/span>\n    <span class=\"key\">environment<\/span>:\n      <span class=\"key\">POSTGRES_USER<\/span>: <span class=\"string\">odoo<\/span>\n      <span class=\"key\">POSTGRES_PASSWORD<\/span>: <span class=\"string\">odoo<\/span>\n      <span class=\"key\">POSTGRES_DB<\/span>: <span class=\"string\">postgres<\/span>\n      <span class=\"key\">PGDATA<\/span>: <span class=\"string\">\/var\/lib\/postgresql\/data<\/span>\n    <span class=\"key\">shm_size<\/span>: <span class=\"string\">'1g'<\/span>\n    <span class=\"key\">restart<\/span>: <span class=\"string\">always<\/span>\n    <span class=\"key\">volumes<\/span>:\n      - <span class=\"string\">$HOME\/odoo\/shared_postgres_data:\/var\/lib\/postgresql\/data<\/span>\n    <span class=\"key\">ports<\/span>:\n      - <span class=\"string\">\"5432:5432\"<\/span><\/code><\/pre>\n<p>Save the above as <code>docker-compose.yml<\/code> and run:<\/p>\n<pre class=\"wp-block-code bash\"><code><span class=\"keyword\">docker-compose<\/span> up -d<\/code><\/pre>\n<\/div>\n<div class=\"wp-block-group\">\n<h2>4. Clone Odoo Source Code<\/h2>\n<ul>\n<li>Clone the Odoo source code (e.g., version 14.0):\n<pre class=\"wp-block-code bash\"><code><span class=\"keyword\">cd<\/span> <span class=\"variable\">$HOME<\/span>\/odoo\/14.0\/src &amp;&amp;&amp; <span class=\"keyword\">git<\/span> clone -b 14.0 --single-branch --depth=1 https:\/\/github.com\/odoo\/odoo.git<\/code><\/pre>\n<\/li>\n<li>To update the source code later:\n<pre class=\"wp-block-code bash\"><code><span class=\"keyword\">cd<\/span> <span class=\"variable\">$HOME<\/span>\/odoo\/14.0\/src\/odoo &amp;&amp; <span class=\"keyword\">git<\/span> pull<\/code><\/pre>\n<\/li>\n<\/ul>\n<\/div>\n<div class=\"wp-block-group\">\n<h2>5. Configure VSCode<\/h2>\n<ul>\n<li><strong>Install Extensions<\/strong>:\n<ul>\n<li>Python<\/li>\n<li>Pylint<\/li>\n<li>Docker<\/li>\n<\/ul>\n<\/li>\n<li><strong>Copy Configuration Files<\/strong>:\n<ul>\n<li>Copy the <code>vscode.<\/code> directory from the <code>docker-odoo-debug<\/code> repository to your project root (<code>$HOME\/odoo<\/code>).<\/li>\n<li>If you have existing configuration files, merge the tutorial's <code>vscode.<\/code> settings into your own.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Update Configuration Files<\/strong>:\n<ul>\n<li>In <code>vscode\/settings.json<\/code>, set the <code>odooVersion<\/code> variable to your Odoo version (e.g., <code>14.0<\/code>).<\/li>\n<li>In <code>vscode\/launch.json<\/code>, configure launch settings as needed.<\/li>\n<li>In <code>vscode\/tasks.json<\/code>, verify that tasks are correctly configured.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/div>\n<div class=\"wp-block-group\">\n<h2>6. Configure Odoo<\/h2>\n<p>Update the <code>odoo.conf<\/code> file:<\/p>\n<ul>\n<li>Ensure paths for the filestore and source code are correct.<\/li>\n<li>Add custom add-ons paths if needed.<\/li>\n<\/ul>\n<\/div>\n<div class=\"wp-block-group\">\n<h2>7. Build Docker Image<\/h2>\n<ul>\n<li>Build a custom Docker image:\n<pre class=\"wp-block-code bash\"><codelinu><span class=\"keyword\">docker<\/span> build -t my-odoo:14.0 <span class=\"variable\">$HOME<\/span>\/odoo\/docker-odoo-debug\/14.0<\/code><\/pre>\n<\/li>\n<li>Optimize by disabling the <code>docker-build<\/code> dependency in <code>vscode\/tasks.json<\/code>:\n<pre class=\"wp-block-code json\"><code><span class=\"comment\">\/\/ Comment out or remove:<\/span>\n<span class=\"key\">\"dependsOn\"<\/span>: <span class=\"string\">[ \"build-image\"]<\/span><\/code><\/pre>\n<\/li>\n<\/ul>\n<\/div>\n<div class=\"wp-block-group\">\n<h2>8. Handle Permissions (If Needed)<\/h2>\n<p>If you encounter permission errors, run one of the following:<\/p>\n<ul>\n<li>Inside the container:\n<pre class=\"wp-block-code bash\"><code><span class=\"keyword\">docker<\/span> exec -u root <span class=\"variable\">&lt;container_name_or_id&gt;<\/span> <span class=\"keyword\">bash<\/span> -c <span class=\"string\">\"mkdir -p \/home\/odoo\/odoo\/varlib &amp;&amp; chown -R odoo:odoo \/home\/odoo\/odoo\/varlib &amp;&amp; chmod -R 755 \/home\/odoo\/odoo\/varlib\"<\/span><\/code><\/pre>\n<\/li>\n<li>On the host:\n<pre class=\"wp-block-code bash\"><code><span class=\"keyword\">sudo<\/span> <span class=\"keyword\">chmod<\/span> -R777 <span class=\"variable\">$HOME<\/span>\/odoo<\/code><\/pre>\n<\/li>\n<\/ul>\n<\/div>\n<div class=\"wp-block-group\">\n<h2>9. Pre-Flight Checklist<\/h2>\n<p>Before starting, confirm the following:<\/p>\n<ul>\n<li>Git is installed.<\/li>\n<li>Docker is installed from the official Docker page.<\/li>\n<li>Odoo source code is cloned from Git.<\/li>\n<li>Odoo filestore directory is created and accessible.<\/li>\n<li>VSCode extensions (Python, Pylint, Docker) are installed.<\/li>\n<li>Postgres database server is running.<\/li>\n<li><code>docker-odoo-debug<\/code> repository is cloned.<\/li>\n<li>Configuration files are copied to the project's <code>vscode.<\/code> directory.<\/li>\n<li><code>odoo.conf<\/code> paths for filestore and source code are correct.<\/li>\n<li>Custom add-ons path is added to <code>odoo.conf<\/code> if required.<\/li>\n<li><code>settings.json<\/code> <code>odooVersion<\/code> is set to the project's Odoo version.<\/li>\n<li><code>tasks.json<\/code> paths are correctly set.<\/li>\n<li>Docker image is built if reused across projects.<\/li>\n<li><code>\"dependsOn\": [\"build-image\"]<\/code> is disabled in <code>tasks.json<\/code>.<\/li>\n<\/ul>\n<\/div>\n<div class=\"wp-block-group\">\n<h2>10. Start Debugging<\/h2>\n<p>With the setup completed, you can now debug Odoo using Docker and VSCode. Refer to the tutorial repository for additional debugging tips.<\/p>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Setting Up Odoo with Docker and VSCode This guide provides a step-by-step process to set up and debug Odoo using Docker and Visual Studio Code (VSCode). 1. Prerequisites Install Required Tools Docker: Install from the official Docker installation page. Git: Install using the appropriate guide for your operating system. Linux Users: Add your user to [&hellip;]<\/p>","protected":false},"author":1,"featured_media":1983,"comment_status":"open","ping_status":"closed","sticky":true,"template":"","format":"standard","meta":{"_acf_changed":false,"jetpack_post_was_ever_published":false,"footnotes":""},"categories":[16,48,11],"tags":[40,5,43,12],"class_list":["post-1975","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops","category-how-to","category-odoo","tag-dev-ops","tag-docker","tag-how-to","tag-odoo"],"acf":[],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/havari.me\/wp-content\/uploads\/2025\/04\/step-by-step-guide-to-debug-odoo-using-docker-1.png?fit=2048%2C1024&ssl=1","_links":{"self":[{"href":"https:\/\/havari.me\/en\/wp-json\/wp\/v2\/posts\/1975","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/havari.me\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/havari.me\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/havari.me\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/havari.me\/en\/wp-json\/wp\/v2\/comments?post=1975"}],"version-history":[{"count":5,"href":"https:\/\/havari.me\/en\/wp-json\/wp\/v2\/posts\/1975\/revisions"}],"predecessor-version":[{"id":2188,"href":"https:\/\/havari.me\/en\/wp-json\/wp\/v2\/posts\/1975\/revisions\/2188"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/havari.me\/en\/wp-json\/wp\/v2\/media\/1983"}],"wp:attachment":[{"href":"https:\/\/havari.me\/en\/wp-json\/wp\/v2\/media?parent=1975"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/havari.me\/en\/wp-json\/wp\/v2\/categories?post=1975"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/havari.me\/en\/wp-json\/wp\/v2\/tags?post=1975"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}