Docker:在Docker运行后,无法在浏览器上启动.Net Core 3.1 Web Api
我是Docker新手,首先,我尝试完成一项基本任务,将.Net Core 3.1 Web Api dockerize,并从命令行运行它(而不是从它实际工作的Visual Studio) 我使用以下Dockerfile和下一个命令创建项目映像:Docker:在Docker运行后,无法在浏览器上启动.Net Core 3.1 Web Api,api,docker,asp.net-core,.net-core,dockerfile,Api,Docker,Asp.net Core,.net Core,Dockerfile,我是Docker新手,首先,我尝试完成一项基本任务,将.Net Core 3.1 Web Api dockerize,并从命令行运行它(而不是从它实际工作的Visual Studio) 我使用以下Dockerfile和下一个命令创建项目映像: docker build -t concepttest_crud1 . Dockerfile(由Visual Studio创建): 4) 我使用以下命令运行映像: docker run -d -p 8080:44390 --name crud1 conc
docker build -t concepttest_crud1 .
Dockerfile(由Visual Studio创建):
4) 我使用以下命令运行映像:
docker run -d -p 8080:44390 --name crud1 concepttest_crud1
其中44390是我在Visual Studio中配置api的端口
调试时,我使用以下方式访问api:
https://localhost:44390/api/Authors
5) 我正尝试使用下一个url在Chrome中测试我的停靠api:
https://localhost:8080/api/Authors
无济于事。无论我使用什么url,当docker run命令执行时,我的api都不会启动,不会出现任何错误
docker ps输出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8df6c92c6678 concepttest_crud1 "dotnet Gfi_ConceptT…" 22 minutes ago Up 22 minutes 0.0.0.0:8080->44390/tcp crud1
docker图像输出:
REPOSITORY TAG IMAGE ID CREATED SIZE
concepttest_crud1 latest 878e4c4845f6 About an hour ago 228MB
<none> <none> 36a29990113c About an hour ago 1GB
编辑2:添加卷曲
docker exec -it 0f0bf4b4de30 /bin/bash . root@4237f947b2b0:/app# curl https://localhost:8080/api/Authors
.: .: Is a directory
编辑3:新卷曲
docker exec -it 0f0bf4b4de30 /bin/bash . root@4237f947b2b0:/app# curl https://localhost/api/Authors
.: .: Is a directory
在我的例子中,这是由于在项目中启用了SSL,但在删除了所有与https相关的内容后,它开始按预期工作 启用SSL意味着在docker容器中安装SSL证书并启用它,这是我无法做到的,因为我没有证书,我只是在学习docker 我已经完成了以下步骤: 在Startup.cs中,我已禁用https重定向
//app.UseHttpsRedirection();
在项目属性中,在“调试”第一节中未选中“启用SSL”
然后我就可以按预期运行容器了。
https://localhost:44390
是在Visual Studio(本地计算机)中配置的api<代码>https://localhost:8080是指向docker内44390的docker容器。但是在Dockerfile
中有Expose 443
(先取消注释),您应该将8080
指向443
(-p 8080:443
)以访问容器内的api非常感谢您在@d0niek的快速响应。正如您所建议的,我使用docker run-dt-p8080:443重新运行映像——名称为crud1 crud1,但仍然无法访问。还有其他建议吗?您是否取消了docker文件中的Expose 443
注释并重新生成图像?是的,事实上它们都已取消注释,但粘贴到StackOverflow时此处显示的注释标记是错误的。您能否再显示一个docker ps
?
docker exec -it 0f0bf4b4de30 /bin/bash . root@4237f947b2b0:/app# curl https://localhost/api/Authors
.: .: Is a directory
//app.UseHttpsRedirection();