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?我想避免在容器启动并运行后手动安装它。
我刚刚测试了 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)
如果对您有帮助请勾选答案!
归档时间: |
|
查看次数: |
11801 次 |
最近记录: |