ca9*_*3d9 2 c# docker .net-core
我创建了一个具有 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"]
Run Code Online (Sandbox Code Playgroud)
控制台程序只是打印出参数。( Console.WriteLine("The args are {0}", args);)
但是,docker run MyApp:dev不打印任何内容。并docker run MyApp:dev ABC得到以下错误。
C:\Program Files\Docker\Docker\Resources\bin\docker.exe:来自守护程序的错误响应:OCI 运行时创建失败:container_linux.go:348:启动容器进程导致“exec: \”ABC\”:可执行文件不存在在 $PATH 中找到:未知。
我尝试过docker run -it MyApp:dev dotnet /app/MyApp.dll ABC,但出现了以下错误
您的意思是运行 dotnet SDK 命令吗?请从以下位置安装 dotnet SDK: 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 用法:dotnet [选项] 用法:dotnet [应用程序路径] 选项: -h|--help 显示帮助。 --info 显示 .NET Core 信息。 --list-sdks 显示已安装的 SDK。 --list-runtimes 显示已安装的运行时。
我尝试了一下docker run -it MyApp:dev bash,发现目录/app是空的。find . -name MyApp.dll找不到任何东西?
看起来你正在做的事情应该有效。我刚刚在这里做了一个回购:
https://github.com/rquackenbush/DotNetCoreArgs
构建后:
docker build .
Run Code Online (Sandbox Code Playgroud)
我能够运行:
docker run <imageid> ABC
Run Code Online (Sandbox Code Playgroud)
我得到了:
Hello World!
There are 1 args.
ABC
Run Code Online (Sandbox Code Playgroud)