1

我有一个 .NET core 5.0 ASPNET Web API 应用程序。此应用程序在 Visual Studio 本地完美运行。

现在我正在尝试使用以下命令发布自包含应用程序:

dotnet publish -c release testdb.sln --framework net5.0 --runtime linux-x64 /p:DebugType=None /p:DebugSymbols=false --nologo --self-contained true -v m

我正在尝试在 Red Hat Linux 映像上运行它(下面的图像详细信息):

NAME="Red Hat Enterprise Linux Server"
VERSION="7.6 (Maipo)"
ID="rhel"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="7.6"
PRETTY_NAME="Red Hat Enterprise Linux Server 7.6 (Maipo)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:7.6:GA:server"
HOME_URL="https://www.redhat.com/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"

REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 7"
REDHAT_BUGZILLA_PRODUCT_VERSION=7.6
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="7.6"
Red Hat Enterprise Linux Server release 7.6 (Maipo)
Red Hat Enterprise Linux Server release 7.6 (Maipo)

这就是我的 docker 文件的样子:

FROM testrepo.net/images/base/rhel:7.6

#published code is copied inside redhat folder
COPY redhat/  APP/
WORKDIR APP
RUN chmod +x /APP
RUN chmod +x testdb.dll
RUN chmod 777 /APP

ENTRYPOINT "./testdb.dll"

当我运行这个图像时,我得到错误:。/testdb.dll: 无法执行二进制文件

我不确定这是否是由于我在发布命令期间指定的无效运行时或其他原因。

4

1 回答 1

0

将 RUN更改chmod +x testdb.dllRUN chmod +x testdb 并更改ENTRYPOINT "./testdb.dll"为 ENTRYPOINT "./testdb"

通过这两个更改,我能够解决问题。

于 2021-12-23T15:57:19.417 回答