【问题标题】:.NET core docker - how to find the entry app after dotnet publish.NET core docker - dotnet publish 后如何找到入口应用
【发布时间】:2018-05-09 03:17:33
【问题描述】:

遵循所有 .NET Core 指南基本上可以归结为 dotnet publish 并将其输出复制到 /app,然后运行 ​​dotnet myapp.dll

我在此设置中运行了大约 40 多个(并且还在增长)产品,因此使用 myapp.dll 修改所有 dockerfile 非常费力。

我想知道是否有某种方法可以在发布期间找出入口 dll 是什么? (例如,使用--self-contained,cli 会生成一个特定于架构的入口文件,因此您可以使用该名称,但鉴于发布需要更长的时间,这似乎是一个不必要的步骤)

【问题讨论】:

    标签: docker .net-core


    【解决方案1】:

    您可以创建一个 bash 脚本来提取项目名称,然后创建一个有效路径并在脚本文件中替换它。

    如果您在解决方案文件夹中,只需运行:(bash)

    PROJECT_NAME=`find ./ -name "*.sln" | head -n 1 | cut -d '/' -f 2 | sed 's/.sln//'`
    

    如果您有解决方案文件 myapp.sln ,此命令将返回值 myapp

    然后你将这个值传递给脚本:

    ./runScript.sh "$PROJECT_NAME"
    

    在这个脚本里面:

    dotnet "/app/$1.dll"
    

    对于 dockerfiles,您已经替换了所有出现的例如。 {{PROJECT_NAME}} 文件中的变量值。现在我不记得命令了,但是 sed 对此很有用。

    【讨论】:

    • .sln 文件没有发布到我的 /app 文件夹中?我想在发布后运行命令,在 docker 内
    猜你喜欢
    • 1970-01-01
    • 2021-01-09
    • 2018-04-05
    • 2018-12-14
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2017-04-14
    相关资源
    最近更新 更多