代码之家  ›  专栏  ›  技术社区  ›  ca9163d9

如何将命令行参数传递给docker run并打印?

  •  1
  • ca9163d9  · 技术社区  · 7 年前

    我创建了一个支持Docker(Linux)的.NET Core2.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("The args are {0}", args); )

    然而, docker run MyApp:dev 什么都没印。以及 docker run MyApp:dev ABC 得到以下错误。

    C:\程序文件\docker\docker\resources\bin\docker.exe:来自守护程序的错误响应:OCI运行时创建失败:container\u linux.go:348:启动容器进程导致“exe c:\”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
    
    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 是空的。 find . -name MyApp.dll 找不到任何东西?

    1 回复  |  直到 7 年前
        1
  •  2
  •   RQDQ    7 年前

    看来你现在做的应该管用。我刚刚在这里做了一个回购:

    https://github.com/rquackenbush/DotNetCoreArgs

    建成后:

    docker build .
    

    我能跑:

    docker run <imageid> ABC
    

    我得到了:

    Hello World!
    There are 1 args.
      ABC
    
    推荐文章