在 docker 中执行编译的 .NetCore 控制台

Posted

技术标签:

【中文标题】在 docker 中执行编译的 .NetCore 控制台【英文标题】:Execute compiled .NetCore console in docker 【发布时间】:2021-08-15 03:38:34 【问题描述】:

我编写了这个小型 .net 核心应用程序,用于将 mysql 数据库从服务器备份和传输到 dockerized 应用程序。但是,当我将它放入 docker 并尝试运行它时,什么也没有发生。如果应用程序中有错误,它应该控制台。写入错误消息但什么都没有。

FROM mysql:5.7.34
COPY ./dbmover /tmp/dbmover
WORKDIR /tmp/dbmover
EXPOSE 3306

正如您已经知道我发布的 .net 核心应用程序包含在 dbmover 文件夹中并复制到 docker 容器中。

现在,如果我连接到容器 shell 并执行应用程序,我不会得到它的输出。我运行 ./myapp.exe

我的应用有我的发布设置。

请注意,此应用程序并非要进行 docker 化,它只是帮助构建容器的工具。

我做错了什么?

【问题讨论】:

你的 docker 文件似乎没有引入 dotnet only mysql? 我会尝试安装 dotnet,但我猜因为我使用了自包含选项,所以我不需要这样做? This link 也可能有帮助。 通过 bash 安装了 dotnet 运行时但没有成功 感谢@AliK 到目前为止,我没有在与应用程序相关的日志中看到任何内容。当我执行应用程序时,它似乎没有写在日志上。我会尝试从您发送给我的问题中找到更多信息。 【参考方案1】:

所以我一开始并没有注意到,但我是用 Visual Studio 而不是命令行工具发布的。一旦完成发布,它就会为您提供发布的路径。我没有注意到它是发布文件夹的父文件夹,它是 linux-x64 文件夹。一旦我使用 linux-x64 子文件夹而不是主文件夹,它就开始工作了。

【讨论】:

以上是关于在 docker 中执行编译的 .NetCore 控制台的主要内容,如果未能解决你的问题,请参考以下文章

.NET Core In Docker内编译发布并运行

.Net Core in Docker

.NetCore + Docker在Windows系统中的安装与部署

Docker最全教程——从理论到实战(十七)

ubuntu中使用docker部署.netcore2.1

docker~run起来之后执行多条命令