如何在Docker中使用Selenium运行dotnet核心应用

伊莉亚·拉特凯维奇(Illia Ratkevych)

我在Docker容器中运行了dotnet core 2.2(aspnet core)应用程序。我正在使用在任何基本教程中都可以找到的最简单的Dockerfile:

  • 使用microsoft/dotnet:2.2-sdk作为基本图像
  • 复制* .csproj
  • 恢复包
  • 建立
  • 发布到/ app文件夹
  • 用于microsoft/dotnet:2.2.1-aspnetcore-runtime从/ app文件夹运行应用程序

现在,我想从另一个网站获取一些数据。这是SPA,因此我需要首先使用浏览器来呈现页面-我决定将Selenium与ChromeDriver一起使用,因为我已经对它们有点熟悉了。

我已经添加了Selenium.WebDriver v3.141Selenium.WebDriver.ChromeDriver v73.0我的项目,集硒存在。在Windows上本地运行正常。但是当我通过Docker运行它时,我得到了:

The file /app/chromedriver does not exist. The driver can be downloaded at http://chromedriver.storage.googleapis.com/index.html

所以现在我想知道如何在Docker中使用dotnet core 2.2运行Selenium +单实例Chrome(无需为我的目的设置Selenium Grid)。

我想我需要创建自定义Dockerfile:

  • 安装硒,铬及其所有依赖项
  • 安装 dotnet
  • 与我当前的Dockerfile相同,用于构建和运行我的应用

但是我不太确定该怎么做。特别是如何“嵌套” Dockerfile。我应该在单个Dockerfile中进行这种组合吗?我是否应该为Selenium + ChromeDriver创建Dockerfile并将其用作下一步的基础映像?

精油

所以我最近有同样的问题。

TL; DR; 您必须通过将命令放入Docker文件将chrome安装到docker映像中。

 FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch

 # Install Chrome
 RUN apt-get update && apt-get install -y \
 apt-transport-https \
 ca-certificates \
 curl \
 gnupg \
 hicolor-icon-theme \
 libcanberra-gtk* \
 libgl1-mesa-dri \
 libgl1-mesa-glx \
 libpango1.0-0 \
 libpulse0 \
 libv4l-0 \
 fonts-symbola \
 --no-install-recommends \
 && curl -sSL https://dl.google.com/linux/linux_signing_key.pub | apt-key add - \
 && echo "deb [arch=amd64] https://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list \
 && apt-get update && apt-get install -y \
 google-chrome-stable \
 --no-install-recommends \
 && apt-get purge --auto-remove -y curl \
 && rm -rf /var/lib/apt/lists/*

 # Add your dotnet core project build stuff here

更简单的解决方案-我在Docker Hub仓库中将其作为Docker映像推送,因此您可以将其用作基础映像。请参阅我的dotnet core 2.2的此示例

 FROM masteroleary/selenium-dotnetcore2.2-linux:v2 AS base

 WORKDIR /app

 EXPOSE 80

 EXPOSE 443

 FROM masteroleary/selenium-dotnetcore2.2-linux:v2 AS build WORKDIR /src

 COPY ["MyProject.csproj", ""]

 RUN dotnet restore "MyProject.csproj"

 COPY . .

 WORKDIR "/src/"

 RUN dotnet build "MyProject.csproj" -c Prod -o /app

 FROM build AS publish

 RUN dotnet publish "MyProject.csproj" -c Prod -o /app

 FROM base AS final

 WORKDIR /app

 COPY --from=publish /app .

 ENTRYPOINT ["dotnet", "MyProject.dll"]

这怎么发生的?

基本上在visual Studio中为带有docker支持的dotnet core 2.2 mvc创建了一个新项目。

目的是在Linux容器中运行我的dotnet核心应用程序

假设通过安装nuget软件包Selenium.Support,Selenium.WebDriver,Selenium.WebDriver.ChromeDriver,我需要的任何东西都会自动包含在Docker容器中,因为Selenium.WebDriver支持.NetStandard 2.0(顺便说一句,其他人没有,只是意识到了)

事实证明,您必须通过将命令放入Docker文件将chrome安装到docker映像中。

我在这里解释了整个学习过程,包括如何找到此工作代码:https : //hub.docker.com/r/masteroleary/selenium-dotnetcore2.2-linux

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Docker中使用Chrome运行Selenium

在Docker容器中使用音频运行应用

如何在Docker容器中使用Gulp运行livereload?

如何在dotnet核心中使用HttpClient发出补丁请求?

如何在nunit dotnet核心测试项目中使用appsettings?

如何在.NET核心应用程序中使用.NET核心类库?

如何在.Net核心控制台应用程序中使用依赖注入

在dotnet核心中,如何确保仅运行我的应用程序的一个副本?

是否可以在Windows docker容器中运行的dotnet核心应用程序中使用EPPlus?

如何在Docker容器中使用Selenium设置python应用程序

如何在Asp核心Web应用(MVC)上创建和使用Docker卷

如何docker dotnet核心角度模板应用程序?

如何在Asp.Net核心应用程序中使用带有Kestrel的域URL?

如何在kubernetes中使用参数运行docker运行映像

使用Docker在Linux中运行dotnet应用程序

如何在laravel应用程序中使用docker容器运行websockets

如何在Docker中使用dotnet核心作为Azure功能运行FFProbe?

如何在dotnet cli中使用“ -optimize”?

如何在.net核心应用程序中使用Powershell启动Windows服务?

如何在Kubernetes中使用HTTPS在本地运行asp.net核心

如何在Ripple中使用Sqlite运行PhoneGap应用?

如何使用 .bat 文件构建和运行 dotnet 核心项目?

如何在 .Net 核心项目中使用 Azure Artifacts 提要创建 docker 镜像

在 docker 中构建 dotnet 核心应用程序 - 永远运行

如何在 docker 中使用 selenium grid 配置 jenkins?

.net 核心 Web 应用程序 docker 映像如何在 Mac OS 上运行?

如何在 docker 容器中的 .net 核心应用程序中运行 python 脚本?

如何使用 dotnet 核心应用程序终止 docker 容器

如何在 docker 中使用 cargo 构建和运行我的 Actix 应用程序?