将已发布的 .Net Core Web API 文件和公共 selenium/standalone-chrome 容器合并到一个 Docker 容器中

Posted

技术标签:

【中文标题】将已发布的 .Net Core Web API 文件和公共 selenium/standalone-chrome 容器合并到一个 Docker 容器中【英文标题】:Combine already published .Net Core Web API files and public selenium/standalone-chrome container into a single Docker container 【发布时间】:2022-01-08 23:46:41 【问题描述】:

Dotnet 发布首先运行。

dotnet publish WebApi.csproj -c Release -o out_linux -r linux-x64

selenium/standalone-chrome是指来自这里的图像

https://hub.docker.com/r/selenium/standalone-chrome

如果把下面的Dockerfile放到out_linux目录下如何实现asp.net+selenium合并成一个容器。我尝试了不同的组合,但无法实现。由于现有基础架构,我不希望将 dotnet publish 包含到 Dockerfile 中。 对于当前变体容器看起来像 dotnet 丢失或找不到。如果更改 FROM 序列并将 Selenium 放在第一个容器的大小,则很明显没有发生合并,第二个 FROM 会清除前一个阶段。

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim as base 
WORKDIR /app
COPY . ./

FROM selenium/standalone-chrome
WORKDIR /app

COPY --from=base /app .
ENTRYPOINT ["dotnet", "MyProject.WebApi.dll"]

关于“docker run”的消息 docker:来自守护进程的错误响应:OCI 运行时创建失败:container_linux.go:380:启动容器进程导致:exec:“dotnet”:$PATH 中找不到可执行文件:未知。

【问题讨论】:

【参考方案1】:

最终使用 selenium/standalone-chrome 作为单独的容器,并使用 RemoteWebDriver 而不是 ChromeDriver 进行抓取。聚合到单个容器中的尝试似乎毫无意义,没有任何价值。

【讨论】:

以上是关于将已发布的 .Net Core Web API 文件和公共 selenium/standalone-chrome 容器合并到一个 Docker 容器中的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core Web Api 自动帮助页面

如何将 .net core Web API 项目添加到现有的 .NET core (3.1) Web Application 项目中?

如何将 .NET Core 2.2 Web API 迁移到 .NET Core 3.0?

将 .Net Core Identity 和 OIDC 与多个 .Net Core Web API 结合使用

如何在 ASP.NET Core Web API 中发布对象列表

无法使用 Windows 身份验证发布到 asp.net core web api