无法在VS Code中调试Docker-Compose部署的Django项目
无法调试Docker-Compose部署的Django项目
我没法在VS Code中调试通过Docker-Compose部署的Django项目。之前在另一个项目里按教程操作时调试完全正常,但当前这套Docker-Compose配置下调试功能失效,有没有人能帮忙排查原因?
Docker-compose配置
version: '3' services: helpdesk_web: build: context: ./ dockerfile: Dockerfile container_name: helpdesk_web volumes: - ./static:/usr/src/app/static - media:/usr/src/app/media ports: - "8000:8000" - "5678:5678" env_file: - ./.env restart: always depends_on: - helpdesk_db helpdesk_db: image: postgres container_name: helpdesk_db volumes: - postgres_data:/var/lib/postgresql/data/ env_file: - ./.env ports: - "5432:5432" environment: POSTGRES_DB: something POSTGRES_PASSWORD: something POSTGRES_USER: something nginx: build: context: ./docker/nginx dockerfile: Dockerfile container_name: helpdesk_nginx restart: on-failure depends_on: - helpdesk_web - helpdesk_db ports: - "80:80" volumes: - ./static:/usr/src/app/static - media:/usr/src/app/media volumes: postgres_data: media:
Dockerfile配置
FROM python:3.10 # 设置容器内工作目录 WORKDIR /usr/src/app # 禁止Python生成.pyc文件 ENV PYTHONDONTWRITEBYTECODE 1 # 禁止Python缓冲stdout和stderr ENV PYTHONUNBUFFERED 1 RUN pip install --upgrade pip # 将本地requirements.txt复制到容器工作目录 COPY requirements.txt . RUN pip install -r requirements.txt # 将本地所有文件复制到容器工作目录 COPY . . RUN chmod +x entrypoint.sh ENTRYPOINT ["/usr/src/app/entrypoint.sh"]
VS Code launch.json配置
{ "version": "0.2.0", "configurations": [ { "name": "Django DEBUG", "type": "python", "request": "attach", "pathMappings": [ { "localRoot": "${workspaceFolder}", "remoteRoot": "/usr/src/app" } ], "port": 5678, "host": "0.0.0.0", }, { "name": "Python: Django", "type": "python", "request": "launch", "program": "${workspaceFolder}\\manage.py", "args": [ "runserver", ], "django": true, "justMyCode": true } ] }
manage.py代码
import os import sys from django.conf import settings def main(): """执行管理任务""" os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'helpdesk.settings') if settings.DEBUG: import debugpy debugpy.listen(('0.0.0.0', 5678)) print('Attached!') try: from django.core.management import execute_from_command_line except ImportError as exc: raise ImportError( "无法导入Django。请确认已安装且在PYTHONPATH环境变量中?是否忘记激活虚拟环境?" ) from exc execute_from_command_line(sys.argv) if __name__ == '__main__': main()
更新补充内容(UPD 1)
settings.py片段
import os from pathlib import Path # 构建项目内路径,例如BASE_DIR / 'subdir' BASE_DIR = Path(__file__).resolve().parent.parent import environ env = environ.Env() env.read_env() env.read_env(env.str('../../../../', '.tds.env')) env.read_env(env.str('../', '.env')) # 快速启动开发设置 - 不适用于生产环境 # 参考官方部署清单文档 # 安全警告:生产环境请保密密钥! SECRET_KEY = env("DJANGO_SECRET_KEY") # 安全警告:生产环境请勿开启DEBUG模式! DEBUG = env("DEBUG")
.env文件内容
DEBUG=True
内容的提问来源于stack exchange,提问作者Алексей Шаков
相关产品推荐
相关产品推荐

