Как предоставить пользовательский порт (TCP) из контейнера Docker с помощью VisualStudio docker debugger (launchSettings.json profile)?

#.net #visual-studio #docker

#.net #visual-studio #docker

Вопрос:

Я хочу иметь возможность отлаживать контейнеры docker в Visual Studio, указав профиль Docker в launchSettings.json. Однако launchSettings.json предоставляет только возможность установить httpPort и httpsPort (которые представляют собой сопоставления из 80 и 443 с пользовательскими портами за пределами контейнера).

У меня есть приложение TCP-сервера (TcpListener), которое прослушивает пользовательский порт (скажем, 9999). Я хочу предоставить этот порт за пределами контейнера во время отладки. Могу ли я как-то это сделать (отредактировав launchSettings.json или какую-либо другую конфигурацию), или я застрял с запуском Docker image отдельно и каким-то образом подключаюсь к нему?

Ответ №1:

Теперь это возможно. В «launchSettings.json» добавьте профиль «Docker» со следующими свойствами. Например;

 "Docker": {
      "commandName": "Docker",
      "httpPort": 54623, 
      "environmentVariables": {
        "ASPNETCORE_URLS": "http:// :5000",
        "ASPNETCORE_ENVIRONMENT": "Development"
      }

    }
  

Приведенная выше конфигурация перенаправит порт хоста 54623 на порт Docker 5000. Порт Docker 5000 будет автоматически предоставлен во время отладки с этим профилем.

Ответ №2:

Я понял это. Я все еще не уверен, возможно ли это с помощью launchSettings.json, но, по крайней мере, это решение, которое работает для меня:

Добавить

 <DockerfileRunArguments>-p 9999:9999</DockerfileRunArguments>
  

к группе свойств файла * .csproj эти аргументы командной строки будут добавлены к команде запуска Docker перед запуском контейнера. Единственная проблема, которую я вижу, заключается в том, что теперь номер порта дублируется в нескольких местах.