【问题标题】:Application not loading as Docker container应用程序未作为 Docker 容器加载
【发布时间】:2019-07-27 21:53:59
【问题描述】:

我正在尝试Dockering ASP.Net Core 2.1 MVC 应用程序。

我创建了一个没有构建错误的 Vanilla MVC 模板项目。

这就是我的DockerFile 的样子

FROM microsoft/dotnet:sdk AS build-env
WORKDIR /app

COPY *.csproj .
RUN dotnet restore

EXPOSE 80 #As suggested in the comment

COPY . ./docker-aspnet-app
RUN dotnet publish -c Release -o out

创建 Docker 镜像

F:\Some\dev\www\docker\sample-app\sample-app>docker build -t aspnetapp .

创建容器

docker run -d -p 8084:80 --name aspnetwebapp aspnetapp

但是当我浏览 localhost:8084 时网站没有加载

我该如何解决这个问题?

请注意,我在 windows10 机器上以 Linux 模式运行 Docker

谢谢!

【问题讨论】:

  • 我自己对 dotnet mv 不熟悉,它是否从端口 80 开始,命令为:dotnet publish -c Release -o out
  • @SvenHakvoort,dotnet mvc 类似于任何其他框架 Web 应用程序。它可以在任何可用的网络端口上运行
  • 在您的情况下,您确定在您的图像中它在端口 80 上运行?
  • @SvenHakvoort 对不起!没有收到您的最新评论。
  • 如果您执行在RUN 语句中指定的命令,是否会启动您正在侦听端口 80 的应用程序?

标签: docker dockerfile asp.net-core-2.1 docker-machine


【解决方案1】:

注意您的Dockerfile 应该是EXPOSE 端口80,尝试将EXPOSE 80 添加到您的Dockerfile。

【讨论】:

  • 按照您的建议更新了 DockerFile。请检查问题。对不起!还是一样的错误
【解决方案2】:

这是一个使用端口 3000 的示例:

尝试使用“docker-compose up”,而不是“docker run ...”。 您需要将“EXPOSE 3000”放入您的 Docker 文件中。 您将需要一个 docker-compose.yml 文件,其内容类似于以下示例:

version: '2.1'

services:
  webapp:
    image: webapp
    build: .
    environment:
       NODE_ENV: production
    ports:
      - 3000:3000

【讨论】:

  • docker-compose 中的 portsdocker run 中的 -p 实际上的行为方式相同(除了 docker-compose 添加了别名在网络内部被其他容器访问)。我不认为这是解决这个问题的方法。
猜你喜欢
  • 2019-03-23
  • 1970-01-01
  • 2021-01-04
  • 2021-05-18
  • 1970-01-01
  • 2019-06-24
  • 1970-01-01
  • 1970-01-01
  • 2017-05-19
相关资源
最近更新 更多