将已发布的 .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 容器中的主要内容,如果未能解决你的问题,请参考以下文章
如何将 .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 结合使用