如何在 Visual Studio Code 中调试 dockerized django?

问题描述 投票:0回答:2

我在将 VS Code 调试器集成到我的 Docker 项目中时遇到问题。

关于我的项目,它不是我做的,所以正如我之前进入的那样,我在 Docker 方面面临一些挑战,但也在学习。我们使用这个命令来访问本地主机:

docker-compose -f docker-compose.dev.yml up -d

这是 docker-compose.dev,这里是文件:

/.vscode
/config
/example_app
...
.dockerignore
.gitignore
docker-compose.dev #The one who we up

这就是文件

volumes:
  postgres_data_test: {}
  hashes: {}
  product_api_root: {}

services:
  postgres:
    image: postgres:10
    volumes:
      - postgres_data_test:/var/lib/postgresql/data
      - ./backups:/backups
    ports:
      - "8889:5432"
    environment:
      - POSTGRES_USER=example
      - POSTGRES_PASSWORD=example

  django:
    build:
      context: .
      dockerfile: Dockerfile.dev
    command: python /app/manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/app
      - hashes:/hashes
      - product_api_root:/product-api-root
    ports:
      - "8000:8000"
    environment:
      - POSTGRES_USER=example
      - POSTGRES_PASSWORD=example
      - DATABASE_URL=postgres://example:example@postgres:5432/example
      - REDIS_URL=redis://redis:6379/0
      - DJANGO_SETTINGS_MODULE=config.settings.local
    depends_on:
      - postgres
      - redis

  redis:
    image: redis:6.2.6

我一直在尝试两种选项来调试它

第一个选项

这是 VS Code 本身记录的一个,它在

tasks.json
文件夹中配置
launch.json
.vscode

供参考:https://code.visualstudio.com/docs/containers/debug-python

这是我尝试过的

launch.json
(我尝试了很多,但这是最后一个,我之前尝试过的其他也不起作用):

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Docker: Python - Django",
      "type": "python",
      "request": "attach",
      "pathMappings": [
        {
          "localRoot": "${workspaceFolder}",
          "remoteRoot": "/app"
        }
      ],
      "port": 8000,
      "host": "localhost",
      "preLaunchTask": "docker-compose up",
      "postDebugTask": "docker-compose down",
      "justMyCode": false,
      "django": true
    }
  ]
}

这是

launch.json
:

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "docker-compose up",
      "type": "shell",
      "command": "docker-compose up",
      "group": {
        "kind": "build",
        "isDefault": true
      }
    }
  ]
}

但是当我尝试通过单击 F5 使用调试器时,出现错误:

The preLaunchTask 'docker-compose up' terminated with exit code 1.

这也发生在我之前的尝试中。

第二个选项

我尝试使用扩展远程容器或开发容器。

  1. 我打开我的项目

  2. 我尝试附加 Django 容器

  3. 打开一个新窗口

  4. 我尝试打开我的项目文件夹

  5. 无限加载

我还尝试打开一个新的没有文件夹的 VS Code 窗口:

  1. 单击 F1 并“打开容器中的文件夹”

  2. 尝试打开我的项目文件夹

  3. 收到错误“工作空间不存在”

供参考:https://code.visualstudio.com/docs/devcontainers/containers

所以,我可以使用其中任何一个,我只需要一个有效的。

django docker visual-studio-code debugging docker-compose
2个回答
0
投票

检查发生情况的一种简单方法是运行

docker exec -it $(docker ps | awk '/django/{print $1}') bash
以进入 Django 容器。花点时间理解这个命令,不要盲目复制/粘贴(docker exec 文档)。如果此命令失败,请使用
docker ps
检查容器的状态,它可能尚未启动。

docker exec -it CONTAINER_ID bash
将允许您在现有容器内运行任意命令。因此,您将能够检查您想要的任何内容。例如,使用
ls -la
,您将能够查看
Dockerfile
是否按预期工作。您还可以访问 Django / Gunicorn 日志等。

旁注,您可能希望运行

docker-compose -f docker-compose.dev.yml up
而无需最后的
-d
在前台运行容器(参见 docker compose 文档):这样会更容易发现任何错误。


0
投票

下面链接中提到的以下步骤应该允许您调试远程 django 应用程序 https://dev.to/ferkarchiloff/how-to-debug-django-inside-a-docker-container-with-vscode-4ef9

© www.soinside.com 2019 - 2024. All rights reserved.