我在Docker容器中运行了dotnet core 2.2(aspnet core)应用程序。我正在使用在任何基本教程中都可以找到的最简单的Dockerfile:
microsoft/dotnet:2.2-sdk
作为基本图像microsoft/dotnet:2.2.1-aspnetcore-runtime
从/ app文件夹运行应用程序现在,我想从另一个网站获取一些数据。这是SPA,因此我需要首先使用浏览器来呈现页面-我决定将Selenium与ChromeDriver一起使用,因为我已经对它们有点熟悉了。
我已经添加了Selenium.WebDriver v3.141
和Selenium.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中进行这种组合吗?我是否应该为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] 删除。
我来说两句