使用带有参数的入口点来决定将哪个 .dll 添加到 运行
Using Entrypoint with arguments to decide which .dll to run
我正在试验 Docker 并使用参数来决定图像中的代码应该开始。
我有这两个入口点,如果 运行 它们自己都可以工作。
ENTRYPOINT ["dotnet", "MultiStart.API.dll"]
ENTRYPOINT ["dotnet", "MultiStart.Worker1.dll"]
我想在调用 docker run
时通过使用参数来决定哪个是 运行
我已经按照
的思路尝试了几件事
CMD ["dotnet", $start]
ENTRYPOINT ./dotnet $start
ENTRYPOINT ["dotnet", $start]
ENTRYPOINT ["dotnet" $start]
然后使用类似这样的方式调用它。
docker run -d -p 8080:80 -e start=MultiStart.API.dll --name multi multistart
但无论我做什么,我都会遇到这个错误(或其中的一些变体):
/bin/sh: 1: ./dotnet: not found
关于如何实现这一点有什么建议吗?
为清楚起见,我将包括将启动两个进程之一的整个 Docker文件。
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["src", "src"]
COPY ["*.sln", ""]
RUN dotnet restore "src/MultiStart.API/MultiStart.API.csproj"
RUN dotnet restore "src/MultiStart.Worker1/MultiStart.Worker1.csproj"
COPY . .
WORKDIR "/src/src"
RUN dotnet build "MultiStart.API/MultiStart.API.csproj" -c Release -o /app/build
RUN dotnet build "MultiStart.Worker1/MultiStart.Worker1.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "MultiStart.API/MultiStart.API.csproj" -c Release -o /app/publish
RUN dotnet publish "MultiStart.Worker1/MultiStart.Worker1.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
# both of these work by themselves.
#ENTRYPOINT ["dotnet", "MultiStart.API.dll"]
ENTRYPOINT ["dotnet", "MultiStart.Worker1.dll"]
我正在试验 Docker 并使用参数来决定图像中的代码应该开始。
我有这两个入口点,如果 运行 它们自己都可以工作。
ENTRYPOINT ["dotnet", "MultiStart.API.dll"]
ENTRYPOINT ["dotnet", "MultiStart.Worker1.dll"]
我想在调用 docker run
我已经按照
的思路尝试了几件事CMD ["dotnet", $start]
ENTRYPOINT ./dotnet $start
ENTRYPOINT ["dotnet", $start]
ENTRYPOINT ["dotnet" $start]
然后使用类似这样的方式调用它。
docker run -d -p 8080:80 -e start=MultiStart.API.dll --name multi multistart
但无论我做什么,我都会遇到这个错误(或其中的一些变体):
/bin/sh: 1: ./dotnet: not found
关于如何实现这一点有什么建议吗?
为清楚起见,我将包括将启动两个进程之一的整个 Docker文件。
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["src", "src"]
COPY ["*.sln", ""]
RUN dotnet restore "src/MultiStart.API/MultiStart.API.csproj"
RUN dotnet restore "src/MultiStart.Worker1/MultiStart.Worker1.csproj"
COPY . .
WORKDIR "/src/src"
RUN dotnet build "MultiStart.API/MultiStart.API.csproj" -c Release -o /app/build
RUN dotnet build "MultiStart.Worker1/MultiStart.Worker1.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "MultiStart.API/MultiStart.API.csproj" -c Release -o /app/publish
RUN dotnet publish "MultiStart.Worker1/MultiStart.Worker1.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
# both of these work by themselves.
#ENTRYPOINT ["dotnet", "MultiStart.API.dll"]
ENTRYPOINT ["dotnet", "MultiStart.Worker1.dll"]