如何从Dockerfile安装curl

1u4esq0p  于 2022-11-03  发布在  Docker
关注(0)|答案(1)|浏览(982)

我试图在我的Docker容器上安装curl,以便在健康检查中使用它,但我似乎无法通过运行Dockerfile中的命令安装它。以下是我的Dockerfile:

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS base
RUN apt-get update \
 && apt-get install -y curl
WORKDIR /app
COPY /Project.MyProject .
RUN dotnet publish -o /publish
WORKDIR /publish
ENTRYPOINT ["sh", "-c", "dotnet Project.MyProject.dll \"${DB_CONNECTION}\""]

然后当我从容器内部运行任何curl命令时,首先执行docker exec it,然后它告诉我curl not found。如果我在容器启动并运行时运行apt-get update && apt-get install -y curl,那么curl安装得很好。我如何通过运行Dockerfile中的命令来安装curl?我希望避免在容器启动并运行后手动安装它。

nhaq1z21

nhaq1z211#

我刚刚测试了运行apt-get更新
&& apt-get install -y curl行,它运行得很好。
看看我是怎么做到的,
定义一个以.NET核心映像为基础的阶段,该阶段将最终用作最终映像。
将基于dotnet SDK映像的另一个阶段定义为构建阶段,以便构建和发布应用程序,然后将基础映像重新用作最终映像。
这是我的dockerfile,它可以很好地构建和打包dotnet应用程序,同时安装像curl和jq这样的包。


# See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM dotnet/aspnet:5.0 AS base

WORKDIR /app

RUN apt-get update \
    && apt-get install -y curl jq 

EXPOSE 80
EXPOSE 443

FROM dotnet/sdk:5.0 AS build

WORKDIR /src

COPY ["PROJECT.csproj", "project/"]

RUN dotnet restore "project/project.csproj" 
COPY . .
WORKDIR "/src/API"

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

RUN dotnet publish "project.csproj" -c Release -o /app/publish

RUN dotnet test "../project.Test" \ 
    /p:CollectCoverage=true \ 
    /p:CoverletOutputFormat=opencover \ 
    /p:CoverletOutput="./../coverage" \
    /p:Include=\"[project.BLL]*,[project.Model]*\"

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

You can see that the final image is the one that depends on the base image with installed curl and jq

请勾选对您有帮助的答案!

相关问题