我创建了一个支持 docker (linux) 的 .Net core 2.1 控制台应用程序。这是系统生成的 Dockerfile。
FROM microsoft/dotnet:2.1-runtime AS base
WORKDIR /app
FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY MyApp/MyApp.fsproj MyApp/
RUN dotnet restore MyApp/MyApp.fsproj
COPY . .
WORKDIR /src/MyApp
RUN dotnet build MyApp.fsproj -c Release -o /app
FROM build AS publish
RUN dotnet publish MyApp.fsproj -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "MyApp.dll"]
控制台程序只是打印出参数。 (Console.WriteLine("参数是 {0}", args);)
但是,docker run MyApp:dev 不会打印任何内容。并且 docker run MyApp:dev ABC 得到以下错误。
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"ABC\": executable file not found in $PATH": unknown.
我尝试了 docker run -it MyApp:dev dotnet/app/MyApp.dll ABC 并得到了错误
Did you mean to run dotnet SDK commands? Please install dotnet SDK from: http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409
运行 docker run -it MyApp:dev dotnet 显示了 dotnet 的用法。
PS C:\Temp> docker run -it MyApp:dev dotnet Usage: dotnet [options] Usage: dotnet [path-to-application] Options: -h|--help Display help. --info Display .NET Core information. --list-sdks Display the installed SDKs. --list-runtimes Display the installed runtimes.
我尝试了 docker run -it MyApp:dev bash 并发现目录 /app 是空的。 找到。 -name MyApp.dll 找不到任何东西?
请您参考如下方法:
看起来您正在做的事情应该有效。我刚刚在这里做了一个 repo :
https://github.com/rquackenbush/DotNetCoreArgs
构建后:
docker build .
我能够运行:
docker run <imageid> ABC
我得到了:
Hello World!
There are 1 args.
ABC
