如何安装所有组件以在docker容器中运行Selenium?
我从这张图片开始:
FROM microsoft/aspnetcore-build:2 AS builder
WORKDIR /source
COPY . .
RUN dotnet restore
RUN dotnet build
ENTRYPOINT ["dotnet", "run"]
Run Code Online (Sandbox Code Playgroud)
我该如何制作它以便我可以启动并使用无头Chrome驱动程序:
ChromeOptions options = new ChromeOptions();
options.AddArgument("--headless");
options.AddArgument("--disable-gpu");
var driverPath = Path.GetFullPath(Path.Combine(environment.ContentRootPath, "bin/Debug/netcoreapp2.0"));
return new ChromeDriver(driverPath, options, TimeSpan.FromSeconds(60));
Run Code Online (Sandbox Code Playgroud)
在docker容器内?
它chromedriver通过Selenium.WebDriver.ChromeDriverNuGet包分发.
在安装了Google Chrome的Mac OS X上,当前设置工作正常.
我试图添加这些行:
RUN apt-get update && apt-get -y install libglib2.0-dev libxi6 libnss3-dev
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
RUN sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ …Run Code Online (Sandbox Code Playgroud) 背景
我构建了一个在本地主机上使用Puppeteer的应用程序。现在,我试图将其部署到Debian环境中,运行Puppeteer的脚本正在超时。经过研究,我意识到这是一个普遍的问题。大多数Debian环境缺少运行Chromium所需的依赖项。
问题
我在这里找到了一些推荐的方法来使用Docker运行应用程序。
我可以使用Docker运行应用程序,但是将Chrome特定的数据添加到Docker文件后,我会遇到一些错误。
无法移动到新名称空间:支持PID名称空间,支持网络名称空间,但失败:errno =不允许操作
建议以Docker文件中的用户身份运行该应用程序。但是,当我添加该用户时,该用户会遇到上述错误。
然后,当我尝试以root用户身份运行该应用程序时,出现了一个新错误,
不支持以不带--no-sandbox的根用户身份运行。
尽管不建议这样做,但我还是希望运行该应用程序,甚至--no-sandbox可以查看其是否正常运行。
例
我一直在运行这样的应用程序,
docker run -p 3000:3000 user/app-name
Run Code Online (Sandbox Code Playgroud)
Docker文件
FROM ubuntu:16.04
# Application parameters and variables
ENV NODE_ENV=production
ENV PORT=3000
ENV Root_Dir /
ENV application_directory /usr/src/app
ENV font_directory /usr/share/fonts/noto
# Configuration for Chrome
ENV CONNECTION_TIMEOUT=60000
ENV CHROME_PATH=/usr/bin/google-chrome
RUN mkdir -p $application_directory
RUN mkdir -p $font_directory
# Dependencies needed for packages downstream
RUN apt-get update && apt-get install -y \
apt-utils \
unzip \
fontconfig \
locales \
gconf-service …Run Code Online (Sandbox Code Playgroud)