ASP.NET Core应用程序无法在容器中启动

时间:2020-01-25 11:50:16

标签: c# docker asp.net-core docker-compose

我有一个ASP.NET Core应用,正在尝试将其部署在Docker容器中。我有一个不同的开发容器,可以很好地工作,但无法使用生产版本。

我拥有的dockerfile(见下文)基于here中的dockerfile,该应用程序构建良好,但无法运行。我收到以下错误:

web_1  |   It was not possible to find any installed .NET Core SDKs
web_1  |   Did you mean to run .NET Core SDK commands? Install a .NET Core SDK from:
web_1  |       https://aka.ms/dotnet-download

此后,容器以代码145终止。

Dockerfile.prod:

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app

RUN curl -sL https://deb.nodesource.com/setup_13.x |  bash -
RUN apt-get install -y nodejs unzip libc6-dev libgdiplus

# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore

# Copy everything else and build
ADD . ./
RUN dotnet publish -c Release -o out

# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
RUN mkdir -p /openld-data/fixture-images
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "openld.dll"]

docker-compose.yml

version: "3.3"

services:
  web:
    build:
      context: .
      dockerfile: Dockerfile.prod
    ports:
      - "5000:5000"
    depends_on:
      - db
    volumes:
      - ./:/app
      - openld-data:/openld-data
  db:
    image: "postgres:12.1"
    environment:
        POSTGRES_DB:
        POSTGRES_USER:
        POSTGRES_PASSWORD:
    ports:
      - "5432:5432"
    volumes:
      - postgres-data:/var/lib/postgresql/data
volumes:
  postgres-data:
  openld-data:

我不知道为什么它不起作用,示例ASP.NET容器做了一些非常相似的事情并且工作正常。如果有人知道是什么原因造成的,将不胜感激。

1 个答案:

答案 0 :(得分:0)

您的问题似乎是这一行:

 volumes:
  - ./:/app

它将本地当前驱动器映射到容器/app。因此,您使用的是在您的计算机上构建的可执行文件,而不是您在容器中构建的可执行文件。 删除- ./:/app并尝试一下。