ASP. NET Базовое приложение не запускается в контейнере - PullRequest
0 голосов
/ 25 января 2020

У меня есть приложение ASP. NET Core, которое я пытаюсь развернуть в контейнере docker. У меня есть другой контейнер для разработки, который работает нормально, но я не могу заставить работать рабочую версию.

Имеющийся у меня 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 голосов
/ 25 января 2020

Похоже, ваша проблема заключается в следующей строке:

 volumes:
  - ./:/app

Он отображает ваш локальный текущий диск на контейнеры /app. Таким образом, вместо исполняемого файла, который вы встроили в контейнер, вы используете тот, который собран на вашем компьютере. Удалите - ./:/app и попробуйте.

...