如何防止Visual Studio或Docker更改主机端口号?

dkqlctbz  于 2023-01-04  发布在  Docker
关注(0)|答案(8)|浏览(149)

我已经停靠了我的Web应用程序,可以在Visual Studio中运行它,但是,它选择使用的主机端口号不一致。

在哪里配置它以始终使用相同的端口号?

kfgdxczn

kfgdxczn1#

我发现我可以通过编辑launchSettings.json并在那里指定值来完成这一点。这与Arjun的答案相似,但据我所知,没有像选择IIS Express时那样添加端口号的UI-所以你必须直接编辑文件。

**更新:**实际上,在我的例子中,我仍然有问题让矶钓号一致后,这样做。我的工作是右键单击项目,并添加“容器编排支持”。然后设置矶钓号在码头组成项目。这有助于覆盖环境变量以及。
**更新2:**对于在launchSettings.json中更改端口号的任何人,您可能还需要删除任何现有容器和/或映像才能使更改生效。清理解决方案对我来说不够。我必须从Docker Desktop中删除它们。

px9o7tmv

px9o7tmv2#

在您的项目launchSettings.json中添加以下项(黄色):

mwecs4sa

mwecs4sa3#

对我来说,我能够在Visual Studio 2017中通过以下步骤找到它:
1.右键单击Web项目,然后单击属性。
1.单击“调试”选项卡。
1.在“配置文件IIS Express”下,您将在“应用程序URL”框中找到端口。
欲了解更多信息,请访问:Docker Port Managing

sh7euo9m

sh7euo9m4#

在VS 2019中添加了Docker-compose编排支持后,我遇到了同样的问题。

ports:
      - "80"
      - "443"

ports:
      - "80:80"
      - "443:443"

根据Docker-compose文档,端口配置方式如下:-
可以同时指定ports (HOST:CONTAINER),也可以只指定容器端口(选择临时主机端口)。
因此,由于主机端口未在默认VS 2019 Docker-compose文件中定义,因此选择了ephemerally。我不得不查找该词的定义,该词似乎是transient的同义词。
持续很短时间的。

xurqigkl

xurqigkl5#

没有UI,但您可以修改. csproj项目文件以添加DockerfileRunArguments

<PropertyGroup> 
 <DockerLaunchAction>LaunchBrowser</DockerLaunchAction>
 <DockerLaunchUrl>http://{ServiceIPAddress}</DockerLaunchUrl>
 <DockerfileRunArguments>-p 8080:80</DockerfileRunArguments>
</PropertyGroup>

编辑:
如果你使用的是NetCore,那么你可以使用launchSettings.json解决方案。对于框架,你可以使用"容器编排支持"或这个hack。

mbskvtky

mbskvtky6#

我在docker-compose.yml中设置了端口,但是它不起作用。原来它被docker-compose.override.yml覆盖了。
您可以:

  • 设置端口内部覆盖(总是适用)
  • 在docker-compose.yml中更改它并从覆盖中删除它(然后可以为不同的配置设置不同的端口)

cxfofazt

cxfofazt7#

我尝试在launchSettings.json中设置"httpPort": 8080,但根本不起作用,甚至在删除并重新创建容器之后也是如此。
对我有效的是:
右键单击Visual Studio中的project〉AddContainer Orchestration Support(如果您已经设置了此操作,则不需要再次执行此操作)
这将设置一个docker-compose.yml文件,其中Dockerfile用于应用程序。还有一个docker-compose.override.yml文件,用于使用特定于环境的设置覆盖docker-compose.yml(例如,用于dev或prod)。默认情况下,这会将容器端口公开为端口80,但不公开固定主机端口来Map容器端口ot。要更改它(例如,Map8080的固定主机端口):

version: '3.4'

services:
  coreapp:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
    ports:
      - "8080:80"
    • 请注意双引号的使用**,例如"8080:80"
h4cxqtbf

h4cxqtbf8#

我遇到了同样的问题,不得不修改docker-compose项目中的docker-compose. override. yml。
最初,端口部分看起来像这样(这导致自动端口分配):

ports:
  - "80"
  - "443"

我改成了

ports:
  - "8080:80"
  - "56850:443"

这就迫使Debug使用指定的端口。

相关问题