Настройка VS Code для простой в использовании среды. Я хотел бы иметь простой способ запустить Python скрипт в Docker и присоединить отладчик.
Что у меня хорошо работает:
- Создан Dockerfile и docker -compose.yaml для запуска docker -compose | start правильно.
- Я могу подключиться к , работает docker контейнер и отладить мой код.
Что я хочу получить?
Одна кнопка для запуска и прикрепления одновременно.
Мне нужно запустить приложение, используя docker -compose. Я не хочу настраивать docker запускать задачи в VS Code.
Мой код и идеи:
Dockerfile:
FROM python:3.6-alpine
RUN mkdir -p /work/
WORKDIR /work/
COPY ./python/requirements.txt ./requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
COPY ./python/src/ .
CMD python -m ptvsd --host 0.0.0.0 --port 5678 --wait run.py < tests/input.txt > tests/output.txt
docker -compose.yaml
version: "3.7"
services:
py-service:
container_name: py-container
image: py-image
build:
context: ./
volumes:
- ./python/src/:/work
ports:
- 5678:5678
запуск. json конфигурации:
{ // simple attach to running container - works good
"name": "Python Attach",
"type": "python",
"request": "attach",
"pathMappings": [
{
"localRoot": "${workspaceFolder}/python/src/",
"remoteRoot": "/work/"
}
],
"port": 5678,
"host": "127.0.0.1"
},
{ // launch docker container and attach to debugger - NOT works
"name": "Run Py in Docker",
"type": "docker",
"request": "launch",
"platform": "python",
"preLaunchTask": "docker-compose-start",
"python": {
"pathMappings": [
{
"localRoot": "${workspaceFolder}/python/src/",
"remoteRoot": "/work/"
}
],
"projectType": "general",
"host": "127.0.0.1",
"port": 5678,
},
},
задач. json для запуска docker -compose команда
{
"label": "docker-compose-start",
"type": "shell",
"command": "docker-compose up"
},
Проблема в том, что выполнение Запуск Py в Docker обычно запускает мой контейнер, но не может присоединить отладчик и завершается неудачно по истечении времени. Пока контейнер еще работает и ждет вложения. Можно ли это как-то исправить?
ОБНОВЛЕНИЕ
Наконец я смог запустить и отладить! Вот мое задание. json:
{
"label": "docker-compose-start",
"type": "shell",
"command": "docker-compose up --build -d",
"isBackground": true,
"problemMatcher": [
{
"pattern": [{ "regexp": ".", "file": 1, "location": 2, "message": 3, }],
"background": {
"activeOnStart": true,
"beginsPattern": "^(Building py-service)$",
"endsPattern": "^(Creating|Recreating|Starting) (py-container) ... (done)$",
}
},
],
},
запуск. json:
{
"name": "run py",
"type": "python",
"request": "attach",
"preLaunchTask": "docker-compose-start",
"pathMappings": [
{
"localRoot": "${workspaceFolder}/python/src/",
"remoteRoot": "/work/"
}
],
"port": 5678,
"host": "127.0.0.1"
},
После всего, что я получил неудобство с отображением всех выводов docker up | build в задачи. VS Code каждый раз просит продолжить, но Enter помогает.