如何从 Dockerfile 安装curl

Pal*_*lBo 5 curl docker dockerfile

我正在尝试在 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}\""]
Run Code Online (Sandbox Code Playgroud)

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

Pac*_*ANA 7

我刚刚测试了 RUN apt-get update
&& apt-get install -y curl 行,它运行良好。

看看我是怎么做到的

定义一个以 .NET core 映像为基础的阶段,该阶段最终将用作最终映像。

将基于 dotnet SDK 映像的另一个阶段定义为构建,以便构建和发布应用程序,然后重用基础映像作为最终映像。

这是我的 dockerfile,它非常适合在安装curl 和 jq 等软件包时构建和打包 dotnet 应用程序。

#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
Run Code Online (Sandbox Code Playgroud)

如果对您有帮助请勾选答案!