我們想Dockerfile為幾個不同的專案使用一個。
專案結構是相同的,就 Dockerfile 而言,唯一不同的是 entrypoint dll。
以下是其中一個Dockerfile的樣子:
FROM mcr.microsoft.com/dotnet/runtime:5.0-alpine3.13-amd64
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "dllName.dll"]
我想過這樣的事情:
FROM mcr.microsoft.com/dotnet/runtime:5.0-alpine3.13-amd64
ARG DLL_NAME
RUN echo "Building for $DLL_NAME"
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", $DLL_NAME]
并使用以下方法構建它:--build-arg "DLL_NAME=dllName.dll"
但是,ENTRYPOINT ["dotnet", $DLL_NAME]運行影像時該命令似乎沒有通過:
/bin/sh: [dotnet,: not found
uj5u.com熱心網友回復:
該RUN指令需要來自環境的變數。
請嘗試更改
FROM mcr.microsoft.com/dotnet/runtime:5.0-alpine3.13-amd64
ARG DLL_NAME
RUN echo "Building for $DLL_NAME"
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", $DLL_NAME]
進入
FROM mcr.microsoft.com/dotnet/runtime:5.0-alpine3.13-amd64
ARG DLL_NAME
ENV DLL_NAME=$DLL_NAME
RUN echo "Building for $DLL_NAME"
WORKDIR /app
COPY . .
ENTRYPOINT /bin/sh dotnet $DLL_NAME
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/335840.html
上一篇:什么時候使用int.Parse?
