Docker中的Dotnet Core开发

时间:2018-08-07 18:42:36

标签: docker asp.net-core .net-core

我正在尝试使用Docker设置一个dotnet核心开发环境。我指的是以下指南进行相同的设置。 LINK

docker run --rm -it -p 8000:80 -v c:\git\dotnet-docker\samples\aspnetapp:/app/ -w /app/aspnetapp microsoft/dotnet:2.1-sdk dotnet watch run

示例项目在端口80上运行。这里没有问题。

但是当我使用dotnet cli搭建一个项目时,该应用程序将在容器内部的端口5000、5001而不是80上运行。

dotnet new webapi

是什么使示例应用程序在端口80上运行?我比较了以下文件,但在这里找不到任何帮助。

  • appsettings.Development.json
  • appsettings.json
  • aspnetapp.csproj
  • Program.cs
  • Startup.cs

链接到GitHub以获取我的代码。 LINK

我的项目命令

docker run --rm -it -p 8000:80 -v c:\git\dotnet-docker-demo:/app/ -w /app microsoft/dotnet:2.1-sdk dotnet watch run

编辑:

这里没有涉及docker文件。我正在尝试直接在源代码上使用 dotnet watch run 。我不想构建dll,然后在容器中运行它。

2 个答案:

答案 0 :(得分:0)

您可以在您的docker文件中提及端口号,我在下面的docker映像文件中用箭头突出显示了

# FROM microsoft/dotnet:2.0-sdk AS build
FROM microsoft/dotnet:2.0-sdk
WORKDIR /app

# copy csproj and restore as distinct layers
COPY *.sln .
COPY TodoService/*.csproj ./TodoService/
RUN dotnet restore

# copy everything else and build app
COPY TodoService/. ./TodoService/
WORKDIR /app/TodoService
RUN dotnet publish -o out /p:PublishWithAspNetCoreTargetManifest="false"


# FROM microsoft/dotnet:2.0-runtime AS runtime
FROM microsoft/dotnet:2.0-runtime
ENV ASPNETCORE_URLS http://+:80  # <----------------
WORKDIR /app
COPY --from=0 /app/TodoService/out ./

ENTRYPOINT ["dotnet", "TodoService.dll"]

答案 1 :(得分:0)

环境变量ASPNETCORE_URLS的值决定用于将HTTP侦听器绑定到哪个端口。可以使用Shell设置该变量,也可以使用dotnet run内联设置该变量:

ASPNETCORE_URLS=http://+8080 \
dotnet run

另一种在本地开发时定义URL的技术是使用DOCS here

中所述的launchSettings.json。

文档示例:

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:54339/",
      "sslPort": 0
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_My_Environment": "1",
        "ASPNETCORE_DETAILEDERRORS": "1",
        "ASPNETCORE_ENVIRONMENT": "Staging"
      }
    },
    "EnvironmentsSample": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Staging"
      },
      "applicationUrl": "http://localhost:54340/"
    },
    "Kestrel Staging": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_My_Environment": "1",
        "ASPNETCORE_DETAILEDERRORS": "1",
        "ASPNETCORE_ENVIRONMENT": "Staging"
      },
      "applicationUrl": "http://localhost:51997/"
    }
  }
}