我试图在我的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?我想避免在容器启动和运行后手动安装它。
发布于 2022-10-25 14:36:51
我刚刚测试了运行apt-get更新
&& apt-获得安装-y卷线,它运行良好。
看看我是怎么做到的
定义一个以.NET核心图像为基础的舞台,它最终将被用作最终图像。
在dotnet映像的基础上定义另一个阶段作为构建,以便构建和发布应用程序,然后重用基本映像作为最终映像。
这里是我的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
如果它对你有帮助,请在答案上打勾!
https://stackoverflow.com/questions/73678713
复制相似问题