Проблемы отладки докеризованного веб-приложения в VS Code
Я изучаю веб-разработку самостоятельно с помощью различных видео на youtube и книг. Я использую VS code и начал создавать свои собственные веб-приложения в контейнерах Docker (прочитал где-то о преимуществах использования контейнеров). Я создал несколько приложений в рамках проекта, однако, поскольку приложения становятся все сложнее и сложнее, мне трудно отладить приложение на предмет ошибок и понять, где я иду не так. Я собираюсь изложить код, который я использую для файлов docker, task.json и launch.json.
DOCKERFILE
# For more information, please refer to https://aka.ms/vscode-docker-python
FROM python:3-slim
EXPOSE 8000
# Expose port for debugpy
EXPOSE 5678
# Keeps Python from generating .pyc files in the container
ENV PYTHONDONTWRITEBYTECODE=1
# Turns off buffering for easier container logging
ENV PYTHONUNBUFFERED=1
# Install debugpy for debugging
RUN python -m pip install debugpy
# Install pip requirements
COPY requirements.txt .
RUN python -m pip install -r requirements.txt
WORKDIR /app
COPY . /app
# Creates a non-root user with an explicit UID and adds permission to access the /app folder
# For more info, please refer to https://aka.ms/vscode-docker-python-configure-containers
RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
USER appuser
# # During debugging, this entry point will be overridden. For more information, please refer to https://aka.ms/vscode-docker-python-debug
# CMD ["gunicorn", "--bind", "0.0.0.0:8000", "DRM_Inventory.wsgi"]
# Command to start Django with debugpy
CMD ["sh", "-c", "pip install debugpy -t /tmp && python /tmp/debugpy --wait-for-client --listen 0.0.0.0:5678 manage.py runserver 0.0.0.0:8000 --nothreading --noreload"]
# docker-compose.yml
version: "3.9"
services:
web:
build: .
command: python /DRM_Django_App/manage.py runserver 0.0.0.0:8000
volumes:
- .:/DRM_Django_App
ports:
- 8000:8000
depends_on:
- db
db:
image: postgres:13
volumes:
- postgres_data:/var/lib/postgresql/data/
environment:
- "POSTGRES_HOST_AUTH_METHOD=trust"
ports:
- "5432:5432" # Expose PostgreSQL default port for debugging
command:
[
"postgres",
"-c",
"log_statement=all",
"-c",
"log_destination=stderr"
]
volumes:
postgres_data:
# docker-compose.debug.yml
version: '3.4'
services:
drmdjangoapp:
image: drmdjangoapp
build:
context: .
dockerfile: ./Dockerfile
command:
[
"sh",
"-c",
"pip install debugpy -t /tmp && python /tmp/debugpy --wait-for-client --listen 0.0.0.0:5678 manage.py runserver 0.0.0.0:8000 --nothreading --noreload"
]
ports:
- 8000:8000
- 5678:5678
volumes:
- .:/app
depends_on:
- db
db:
image: postgres:13
volumes:
- postgres_data:/var/lib/postgresql/data/
environment:
- "POSTGRES_HOST_AUTH_METHOD=trust"
ports:
- "5432:5432"
volumes:
postgres_data:
task.json:
{
"version": "2.0.0",
"tasks": [
{
"type": "docker-build",
"label": "docker-build",
"platform": "python",
"dockerBuild": {
"tag": "drmdjangoapp:latest",
"dockerfile": "${workspaceFolder}/Dockerfile",
"context": "${workspaceFolder}",
"pull": true
}
},
{
"type": "docker-run",
"label": "docker-run: debug",
"dependsOn": [
"docker-build"
],
"dockerRun": {
"env": {
"PYTHONUNBUFFERED": "1"
},
"ports": [
{
"containerPort": 8000,
"hostPort": 8000
},
{
"containerPort": 5678,
"hostPort": 5678
}
],
"volumes": [
{
"containerPath": "/app",
"localPath": "${workspaceFolder}"
}
]
}
}
]
}
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Docker: Python - Django",
"type": "docker",
"request": "launch",
"preLaunchTask": "docker-run: debug",
"python": {
"pathMappings": [
{
"localRoot": "${workspaceFolder}",
"remoteRoot": "/app"
}
],
"projectType": "django"
}
}
]
}
Я пробовал удалить все эти файлы и с помощью командной палитры создать все эти файлы заново с нуля и обновить соответствующие части в соответствии с несколькими видео по теме, но безрезультатно.