无法在docker linux中运行Asp.Net Core

Loc Nguyen

我正在尝试使用docker-compose在docker内部运行ASP.Net Core。这里是dockerfile内容:

FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443


FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
COPY ["SchoolContact/SchoolContact.csproj", "SchoolContact/"]
RUN dotnet restore "SchoolContact/SchoolContact.csproj"
COPY . .
WORKDIR "/src/SchoolContact"
RUN dotnet build "SchoolContact.csproj" -c Release -o /app

FROM build AS publish
RUN dotnet publish "SchoolContact.csproj" -c Release -o /app

FROM base AS final
WORKDIR /app
ENV ASPNETCORE_URLS http://+:5000
EXPOSE 5000 80
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "SchoolContact.dll"]

这里是docker-compose.yml内容:

version: '3'

services:
  api:
        image: schoolcontact
        build:
          context: .
          dockerfile: SchoolContact/Dockerfile
        links:
          - db:db
        ports:
          - '5000:5000'
        restart: always
        networks:
          - school
  db:
      image: mysql:5.7
      volumes:
        - ./db:/var/lib/mysql
      restart: always
      environment:
        MYSQL_ROOT_PASSWORD: 123456
        MYSQL_DATABASE: Test
        MYSQL_USER: admin
        MYSQL_PASSWORD: 123456
      networks:
        - school

  phpmyadmin:
        depends_on:
          - db
        image: phpmyadmin/phpmyadmin
        restart: always
        ports:
          - '8080:80'
        environment:
          PMA_HOST: db
          MYSQL_ROOT_PASSWORD: 123456 
        networks:
          - school

  reverse-proxy:
        container_name: proxy
        image: nginx
        depends_on:
          - api
        ports:
          - "9090:8080"
        volumes:
          - ./proxy.conf:/etc/nginx/conf.d/default.conf
        networks:
          - school

networks:
  school:
volumes:
    db:
       driver: "local"

proxy.conf

server {
    listen 8080;

    location / {
      proxy_pass http://api:5000;
    }
}

在这里发布并寻求帮助之前,我尝试了太多次了,我尝试了不带nginx不带端口或不端口的多种方式运行。但是我仍然无法访问该应用程序。我的最终目的是将应用程序托管在docker中,并可以通过URL访问它http://localhost:5000我不知道我在哪里错了或者错过了其他东西。我真的需要帮助。谢谢阅读。

Loc Nguyen

这是我的工作方式,经过几周的研究(对于那些有相同问题的人),将这些行添加到Main方法中。另外,dockerfiledocker -compose.yml应该如下所示:

public static void Main(string[] args)
{
    //CreateWebHostBuilder(args).Build().Run();
    var host = new WebHostBuilder()
        .UseKestrel()
        .UseContentRoot(Directory.GetCurrentDirectory())
        .UseUrls("http://*:9001")
        .UseIISIntegration()
        .UseStartup<Startup>()
        .Build();

    host.Run();
}

docker-compose.yml

services:
  api:
        image: schoolcontact
        build:
          context: .
          dockerfile: SchoolContact/Dockerfile
        links:
          - db:db
        ports:
          - 9021:9001
        restart: always
        networks:
          - school

docker文件

FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80
#EXPOSE 443


FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
COPY ["SchoolContact/SchoolContact.csproj", "SchoolContact/"]
RUN dotnet restore "SchoolContact/SchoolContact.csproj"
COPY . .
WORKDIR "/src/SchoolContact"
RUN dotnet build "SchoolContact.csproj" -c Release -o /app

FROM build AS publish
RUN dotnet publish "SchoolContact.csproj" -c Release -o /app

FROM base AS final
WORKDIR /app
EXPOSE 9001
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "SchoolContact.dll"]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Arch Linux上的asp.net core 2.1无法运行

ASP.NET Core 3:无法在 linux 上运行

在Linux的Windows子系统中的Docker中运行.Net Core

Docker-无法使用Powershell运行ASP.NET Core API,但可以在Visual Studio中运行

运行ASP.Net Core Docker映像

无法在Docker上运行Dot Net Core预览项目

SignalR .NET Core 2.1无法在代理Docker容器上运行

无法访问ASP.NET Core Docker容器应用

无法在本地Docker容器上访问Asp.Net Core

.NET Core 3.0 Web API无法在Docker容器中启动

在以自定义用户身份运行的Docker中运行ASP.NET Core App

在Docker上从Amazon Linux 2运行ASP.NET Core应用-全球化

安装Asp.net Core Runtime无法在ubuntu linux操作系统上运行

无法从Docker中的ASP.NET Core 3.1连接到内部SQL Server

Docker 中带有 JavaScriptServices 的 ASP.NET Core 项目无法启动节点

无法构建在Docker中引用PCL的ASP.NET Core应用

无法访问托管在 Docker 容器中的 VirtualBox VM 上的 ASP.NET Core 网站

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

.NET Core:在Docker中的Linux上使用System.Drawing.Common-“无法打开显示”错误

无法在3.1 docker容器中运行dotnet转储-“进程1未运行兼容的.NET Core运行时”

在Windows 7中的Docker上运行ASP.NET Core WebApp时出错(调试)

在Firestore中查询Asp.net Core / Kestrel中的布尔属性会导致Linux Docker崩溃

升级到v1.1后,ASP.NET Core将无法在IIS中运行

Async / Await无法按预期在ASP.NET Core Controller Actions中运行

在Linux App Service的Docker容器中运行.Net Core控制台应用程序

创建针对Linux Docker容器的长期运行的.NET Core服务

Asp.net Core Websocket 与 linux/docker 兼容吗?

.Net Core Web API Docker(Linux)-无法加载libMyCpp.so文件

ASP.NET 5(ASP.NET Core)-无法与IIS一起运行