【问题标题】:Docker image fails to runDocker 镜像无法运行
【发布时间】:2019-03-10 04:11:54
【问题描述】:

我们有一个在 Ubuntu 18.04 下运行的 ASP.Net 应用程序(安装了 aspnetcore 2.2,只有运行时)。我们使用 kestrel 服务为应用提供服务,使用 nginx 作为反向代理。安装在虚拟机/云实例中时,一切运行良好。 现在,我正在寻找容器化我们的应用程序(只是测试水域)。因此,我使用以下 dockerfile 构建了一个图像:

FROM ubuntu:18.04
RUN apt-get update && \
apt-get -y install software-properties-common wget && \
wget -q -O /opt/packages-microsoft-prod.deb https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb && \
dpkg -i /opt/packages-microsoft-prod.deb  && \
add-apt-repository universe  && \
apt-get update  && \
apt-get install -y apt-transport-https aspnetcore-runtime-2.2 nginx 

COPY default /etc/nginx/sites-available/default

COPY appfolder /opt/

ENTRYPOINT ["dotnet", "/opt/appfolder/app.dll"]

EXPOSE 80:80

但是,当我尝试运行映像时,出现以下错误:

您的意思是运行 dotnet SDK 命令吗?请安装 dotnet SDK 来自:https://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409

知道可能出了什么问题吗?我的假设是(对 Docker 世界很陌生): 使用 Ubuntu 18.04 作为基础镜像并在顶部安装 Dotnet 和 Nginx,然后复制 nginx 默认站点并运行应用程序(使用 dotnet)。显然,我错过了一些东西。

【问题讨论】:

  • 调试映像的一种方法是使用... --entrypoint=/bin/bash [image] 运行它。然后,从 shell 中检查您的应用程序文件是否在您期望的位置,然后尝试运行 DLL。
  • 谢谢@DazWilkin,这是个好主意。今天会试一试。
  • 刚试了一下,Docker 运行它并立即退出。没有错误,什么都没有。甚至返回码为 0 表示没有错误。
  • 嗯,这是个问题! :-) 您可以尝试增加详细程度:--verbosity 和 detailed 或 diagnostic。如果您使用 VM 重现 DOCKERFILE 命令,它是否有效?我很好奇的一件事是,您说您使用 Nginx 作为代理,但您仅使用 DLL 运行 dotnet 进程。那里有些不对劲。我很抱歉我的 .NET foo 是有限的。
  • 将尝试冗长。我现在确实最终更改了 Dockerfile。我创建了一个脚本(验证它在我的 vm 中工作),而不是所有这些运行命令,复制并运行它。这似乎好一点。此外,对于 docker run 命令,看起来添加 -t (分配 pesudo 终端)和 -i (交互式 shell)似乎有所作为,并为我提供了可以使用的 shell。我错过了首先添加服务 nginx start ,但后来添加了它(尽管这不是问题)。 :-)

标签: docker asp.net-core dockerfile ubuntu-18.04


【解决方案1】:

根据微软文档here。

你需要运行

sudo apt-get update

之后

sudo apt-get install -y apt-transport-https

之前

sudo apt-get install aspnetcore-runtime-2.2

【讨论】:

  • 完全不确定这是个问题,因为当我从容器内运行这些命令时,一切都按预期运行。
  • 我认为这是因为在您运行容器中的命令时,apt-transport-https 在您构建映像时已经安装。
  • 好吧,没关系,我试过用虚拟机,它就像你说的那样工作。
猜你喜欢
  • 1970-01-01
  • 2021-07-06
  • 1970-01-01
  • 2022-10-15
  • 2018-09-28
  • 2020-01-08
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多