当我尝试通过http://localhost:5004在docker上运行我的ASP.NETCore应用程序时,我的浏览器会收到以下响应:ERR_CONNECTION_REFUSED
这是我的档案
# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:5.0.404 AS build
WORKDIR /code
COPY . .
# copy everything else and build app
RUN dotnet publish -c release -o /app
# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:5.0.13
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "ProductCatalogApi.dll", "--server.urls", "http://+:5004"]
我的docker-compose.yml文件(不要介意密码格式):
version: "5.0.4"
networks:
frontend:
backend:
services:
catalog:
build:
context: .\src\Services\ProductCatalogApi
dockerfile: Dockerfile
image: shoes/catalog
environment:
- DatabaseServer=mssqlserver
- DatabaseName=CatalogDb
- DatabaseUser=sa
- DatabasePassword=(passwordhere)
- ASPNETCORE_URLS=http://+:5004
- ASPNETCORE_ENVIRONMENT=Production
container_name: catalogapi
ports:
- "5004:80"
networks:
- backend
- frontend
depends_on:
- mssqlserver
mssqlserver:
image: "mcr.microsoft.com/mssql/server:2019-latest"
ports:
- "1445:1433"
container_name: mssqlcontainer
environment:
- ACCEPT_EULA=Y
- SA_PASSWORD=(passwordhere)
- MSSQL_PID=Developer
networks:
- backend
在程序中创建主机构建器.cs:
private static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
// webBuilder.UseKestrel(options => { options.Listen(IPAddress.Any, 5000); });
webBuilder.UseKestrel().UseUrls(Environment.GetEnvironmentVariable("ASPNETCORE_URLS"));
});
}
}
我无法找出我的配置中缺少或错误的地方,无法通过本地主机5004(或任何端口,例如5000)访问本地机器上的应用程序
注意:我按以下顺序运行这些命令
当您设置ASPNETCORE_URLS=超文本传输协议://: 5004
时,您的应用程序将监听端口5004。所以这是您应该映射到主机端口的端口。您已经映射了端口80。
将html" target="_blank">docker-compose文件更改为
ports:
- "5004:5004"
现在您应该可以访问它了。请记住,默认情况下,Swagger在生产环境中不可用,因此您将无法使用Swagger页面。
你已尝试以多种不同的方式配置应用侦听的端口。一个好主意可能是将其全部删除,并仅在启动设置.json文件中对其进行配置。然后,当您在开发期间本地运行它时,它将侦听 launchSettings.json 中指定的端口,并且在容器中运行时,它将侦听端口 80。
它在容器中运行时会监听端口80的原因是Microsoft在aspnet映像中将ASPNETCORE_URLS环境变量设置为超文本传输协议://: 80
。
我有一个RMI服务器在本地主机上运行,导出类型的对象: 然后我想启动一个客户端并获取该对象的存根。似乎找到了注册表,但随后在块中抛出了: java.rmi.NotBoundexception:M在sun.rmi.registry.registryimpl.lookup(registryimpl.java:136)在sun.rmi.server.unicastserverref.olddispatc
问题内容: 感谢您收看这个问题。 所以我的问题与如何在docker-compose up指令上运行脚本的最佳实践有关。 目前,我正在主机和容器之间共享一个卷,以使脚本更改对主机和容器均可见。与监视脚本轮询配置文件中的更改类似。 该脚本必须根据预定义规则对主机进行更改。 所以我的问题是: 我如何才能在docker-compose up指令上甚至从服务的dockerfile上启动此脚本,以便每当容器启
问题内容: 我是否可以附加功能作为按钮的单击事件,以使浏览器返回上一页? 问题答案: 在您的输入元素中添加
问题内容: 我已经能够成功使用以下卷在Docker容器之间共享文件夹 但是我的问题是,这与在Dockerfile中使用命令之间有什么区别 我正在使用带有命令的图像,并且想知道如何与主机共享它。我已经使用上面的命令完成了此操作,但我不知道是否同时需要和和。 问题答案: 该命令将在您的容器中安装一个目录,并将在该目录中创建或编辑的所有文件存储 在容器文件结构外部的 主机磁盘上,绕过联合文件系统。 这个
问题内容: 我在apache后面使用cxf和jetty通过soap公开Web服务。目标是在所有情况下都在http:// localhost:9000 上启动码头并为其提供apache代理,但是让自动生成的wsdl显示适合其运行环境的soap:address(例如,http://api.testing .example.com的 ,http://api.uat.example.com,https:/