我有一个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容器做了一些非常相似的事情并且工作正常。如果有人知道是什么原因造成的,将不胜感激。
答案 0 :(得分:0)
您的问题似乎是这一行:
volumes:
- ./:/app
它将本地当前驱动器映射到容器/app
。因此,您使用的是在您的计算机上构建的可执行文件,而不是您在容器中构建的可执行文件。
删除- ./:/app
并尝试一下。