ben*_*vis 6 c# asp.net docker .net-core docker-compose
我通过教程将 ASP.NET Core 中的 API WeatherForecast Web 模板进行了 docker 化:
我必须从这里开始,因为我没有使用此处的教程构建新图像: https: //docs.docker.com/compose/aspnet-mssql-compose/
“1”有效,这很棒。但是,“2”将无法在localhost:5000/WeatherForecast 所宣传的端口上工作,并且在对可用文档进行多次审查后,我在调试原因时遇到了一些麻烦。
我应该注意到,在从命令行创建模板化应用程序时,我确实选择了 --no-https 选项。
然后我使用 docker ps 来启动 PORTS 。该网络应用程序正在使用5000/tcp, 0.0.0.0:32779->80/tcp. 当我替换 时5000 ,32779我得到的是返回的 API 字符串!我知道我在 docker-compose 中遗漏了一些东西,需要额外的关注。谢谢你!
编辑:作为参考,下面的文件是由我的 VSCode 编辑器生成的。1. 我运行 dotnet new webapi --no-https 2. 然后我打开 VSCode“命令面板”并运行Docker: Add Dockerfiles to Workspace并选择“yes”以包含 docker-compose.yml 文件和 Linux。我也选择使用 port 5000。我使用 Fedora 30。 4. 我dotnet build从终端中的项目根目录运行。5. 如果我从docker命令运行并使端口显式,它将按照广告的方式工作,但如果我运行docker-compose -f <yml-file> up -d- --build,则不会。
我刚刚重新阅读了这篇文章,发现我被困在 VSCode 中来解决问题,这很烦人(根据文档)
默认情况下,Docker 会将随机选择的主机端口分配给容器公开的端口(容器端口)。在这种情况下,暴露的(容器)端口是 5000,但它将通过随机端口(例如 32737)暴露在主机上。
您可以通过更改 docker-run: debug 任务(在 .vscode/tasks.json 文件中定义)使用的 Docker 运行选项来使用主机上的特定端口。例如,如果您想使用相同的端口(5000)来公开服务,则 docker-run: debug 任务定义将如下所示:
A。Dockerfile
# Please refer https://aka.ms/HTTPSinContainer on how to setup an
https developer certificate for your ASP .NET Core service.
version: '3.4'
services:
aspdotnetdocker2:
image: aspdotnetdocker2
build:
context: .
dockerfile: Dockerfile
ports:
- 5000
Run Code Online (Sandbox Code Playgroud)
b.docker-compose.yml
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 5000
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY ["aspdotnet_docker2.csproj", "./"]
RUN dotnet restore "./aspdotnet_docker2.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "aspdotnet_docker2.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "aspdotnet_docker2.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "aspdotnet_docker2.dll"]
Run Code Online (Sandbox Code Playgroud)
简短语法
指定两个端口 (HOST:CONTAINER),或仅指定容器端口(选择临时主机端口)。
所以尝试:
ports:
- "5000:<port in ASPNETCORE_URLS>"
# e.g.
# - "5000:80"
# - "44388:443"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4848 次 |
| 最近记录: |