Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker:在Docker运行后,无法在浏览器上启动.Net Core 3.1 Web Api_Api_Docker_Asp.net Core_.net Core_Dockerfile - Fatal编程技术网

Docker:在Docker运行后,无法在浏览器上启动.Net Core 3.1 Web Api

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新手,首先,我尝试完成一项基本任务,将.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 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();