【发布时间】:2020-10-10 20:04:55
【问题描述】:
如果我有一个公共 url,例如 https://dogsandcats.com,并且我希望能够从已部署的 docker 容器连接到该服务器,我该怎么做?
目前,我的 .Net Core 项目有以下 Dockerfile:
FROM microsoft/dotnet:sdk AS build-env
WORKDIR /app
# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
# Build runtime image
FROM microsoft/dotnet:aspnetcore-runtime
WORKDIR /app
COPY --from=build-env /app/out .
EXPOSE 8080
ENTRYPOINT ["dotnet", "MedicineInventoryManagement.dll"]
我正在公开端口 8080,当我在本地环境中访问 localhost:8080 时,我可以看到我的网络服务器正在分发应用程序。我已经在https://dogsandcats.com 上映射了端口 8080,但它不像在我的本地计算机上那样运行。
我必须对Program.cs 中的以下代码块做些什么吗?
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
}
还是问题出在其他地方?
【问题讨论】:
-
默认情况下,dotnet 核心应用程序在端口 5000 上运行,但我没有看到您使用 UseUrls 来改变它。当你从外面尝试时,你看到了什么?如果我理解正确,您正在使用公共 url 在服务器上部署您的容器,当您尝试从外部连接时它不起作用?
-
当我使用这个容器时:aspnetcore-runtime,它默认运行在8000端口。当我尝试访问公共网站时,我得到一个 503 Forbidden No server running 来处理请求错误。我认为没有 docker asp.net 核心网站默认会在 5000 端口上运行,但是有了这个容器就不同了。
标签: c# docker asp.net-core