Я пытаюсь настроить конфигурации запуска/отладки в WebStorm для отладки расширений Directus. Directus работает внутри контейнера Docker, которым управляет docker-compose.yml. Несмотря на то, что я следую документации WebStorm, при запуске отладчика возникают ошибки.
Конфигурация WebStorm для контейнера Directus:
Конфигурация образа Docker для Directus:
FROM directus/directus:10.13
USER root
RUN corepack enable \
&& corepack prepare [email protected] --activate \
# Currently required, we'll probably address this in the base image in future release
&& chown node:node /directus
RUN mkdir -p /directus/directus-config
RUN chown -R node:node /directus/directus-config
ENV PNPM_HOME = "/pnpm"
ENV PATH = "$PNPM_HOME:$PATH"
RUN pnpm install -g tsx
USER node
RUN pnpm install directus-extension-sync
RUN pnpm install directus-sync
Конфигурация Docker Compose для Directus:
jp_backend:
container_name: ${COMPOSE_PROJECT_NAME}_jp_backend
user: ${UID}:${GID}
build:
context: ./
dockerfile: docker/backend/Dockerfile
env_file:
- .env
ports:
- '${DOCKER_BACKEND_PORT}:8055'
volumes:
- ./directus/extensions:/directus/extensions
- ./directus/directus-config:/directus/directus-config
- ./directus/start.ts:/directus/start.ts
- ./directus/start.js:/directus/start.js
- './.env:/directus/.env:ro'
- ./docker/backend/.bash_history:/home/node/.ash_history
networks:
- backend_network
- traefik_network
depends_on:
- jp_database
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.${COMPOSE_PROJECT_NAME}-backend.entrypoints=http'
- 'traefik.http.routers.${COMPOSE_PROJECT_NAME}-backend.rule=Host(`${COMPOSE_PROJECT_NAME}.backend.${DOMAIN}`)'
- 'traefik.http.middlewares.${COMPOSE_PROJECT_NAME}-backend-https-redirect.redirectscheme.scheme=https'
- 'traefik.http.routers.${COMPOSE_PROJECT_NAME}-backend.middlewares=${COMPOSE_PROJECT_NAME}-backend-https-redirect'
- 'traefik.http.routers.${COMPOSE_PROJECT_NAME}-backend-secure.entrypoints=https'
- 'traefik.http.routers.${COMPOSE_PROJECT_NAME}-backend-secure.rule=Host(`${COMPOSE_PROJECT_NAME}.backend.${DOMAIN}`)'
- 'traefik.http.routers.${COMPOSE_PROJECT_NAME}-backend-secure.tls=true'
- 'traefik.http.routers.${COMPOSE_PROJECT_NAME}-backend-secure.tls.certresolver=http'
- 'traefik.http.routers.${COMPOSE_PROJECT_NAME}-backend-secure.service=${COMPOSE_PROJECT_NAME}-backend'
- 'traefik.http.services.${COMPOSE_PROJECT_NAME}-backend.loadbalancer.server.port=8055'
- 'traefik.docker.network=traefik_network'
Когда я начинаю отладку, я получаю следующую ошибку:
tsx /directus/start.ts
WARN[0000] /home/happyhevia/JP/jobs-paragon-backend/docker-compose.yml: `version` is obsolete
WARN[0000] /home/happyhevia/.cache/JetBrains/WebStorm2024.1/tmp/docker_compose/docker-compose.override.881.yml: `version` is obsolete
[+] Running 2/0
✔ Container dev_jp_database Running 0.0s
✔ Container dev_jp_backend Recreated 0.0s
Attaching to dev_jp_backend
dev_jp_backend | Debugger listening on ws://127.0.0.1:38727/ddbd5270-8cfe-4cd1-b203-8505e794968c
dev_jp_backend | For help, see: https://nodejs.org/en/docs/inspector
dev_jp_backend | [debugConnectionForwarder] Error connecting to inspector {"port":38727} Error: connect ECONNREFUSED ::1:38727
dev_jp_backend | at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16) {
dev_jp_backend | errno: -111,
dev_jp_backend | code: 'ECONNREFUSED',
dev_jp_backend | syscall: 'connect',
dev_jp_backend | address: '::1',
dev_jp_backend | port: 38727
dev_jp_backend | }
При запуске той же конфигурации без попыток отладки все работает правильно, и я могу получить доступ к панели управления Directus, как и ожидалось. Это означает, что настройка подходит для запуска, но что-то настроено неправильно или несовместимо для отладки.
Попытки решить проблему:
Я провел все выходные, пытаясь разобраться в этом, и был бы чрезвычайно благодарен за любые идеи или решения. Это особенно неприятно, поскольку установка выглядит корректной и работает нормально, но во время отладки происходит сбой.
@LazyOne Огромное спасибо! Проблема действительно была связана с настройками порта. Я обнаружил, что WebStorm использует переменную среды JETBRAINS_NODE_BIND_HOST, значение которой по умолчанию равно 127.0.0.1. Установка JETBRAINS_NODE_BIND_HOST=::1 в конфигурации запуска/отладки полностью решила проблему.
Большой! Пожалуйста, опубликуйте это как ответ (и примите его позже). Вопросы с принятыми ответами имеют гораздо лучшую видимость. Это поможет другим пользователям в аналогичной ситуации — они смогут ясно увидеть, что есть какое-то решение, и не нужно копаться в комментариях.
Проблема была в настройках порта. WebStorm использует переменную среды JETBRAINS_NODE_BIND_HOST
, которая по умолчанию равна 127.0.0.1
. Изменение его на ::1
решило проблему.
Вот что нужно сделать:
JETBRAINS_NODE_BIND_HOST
со значением ::1
.Спасибо @LazyOne за подсказку, которая привела к этому решению!
Случайная мысль: проверьте IPv4 и IPv6.