docker工人无头镀铬与python。 Chrome无法启动:崩溃

我想在Docker容器中运行这个简单的脚本:

def hi_chrome(): from xvfbwrapper import Xvfb from splinter import Browser vdisplay = Xvfb() vdisplay.start() print "spawning connector" oBrowser = Browser('chrome') oBrowser.visit("http://google.co.za") assert oBrowser.title == "Google" print "yay" vdisplay.stop() if __name__ == '__main__': hi_chrome() 

通过执行我的docker文件中列出的所有pip和apt-get安装并运行脚本,我已经获得了在虚拟环境中运行的脚本。 但是当我尝试在一个容器中运行它时,我得到:

 Traceback (most recent call last): File "app.py", line 19, in <module> hi_chrome() File "app.py", line 10, in hi_chrome oBrowser = Browser('chrome') File "/usr/local/lib/python2.7/dist-packages/splinter/browser.py", line 63, in Browser return driver(*args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/splinter/driver/webdriver/chrome.py", line 31, in __init__ self.driver = Chrome(chrome_options=options, **kwargs) File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/chrome/webdriver.py", line 69, in __init__ desired_capabilities=desired_capabilities) File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 92, in __init__ self.start_session(desired_capabilities, browser_profile) File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 179, in start_session response = self.execute(Command.NEW_SESSION, capabilities) File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 236, in execute self.error_handler.check_response(response) File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 192, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed (Driver info: chromedriver=2.27.440175 (9bc1d90b8bfa4dd181fbbf769a5eb5e575574320),platform=Linux 4.8.0-34-generic x86_64) 

在使用docker-hub上的其他容器来运行我的脚本时,我遇到了类似的问题。 我试过使用铬而不是铬,我尝试使用一些容器,我发现在docker集线器,但我一直在find破碎的废话。 这应该很简单。

我的主要怀疑是这是一个版本控制的事情。 但它在venv中工作,所以没有太多的意义。 或者docker只是需要一些奇特的东西来让chrome webdriver运行。

有人可以指出我的明显和noobish错误?

我的Dockerfile看起来像

 FROM ubuntu:16.04 RUN apt-get update -y && \ apt-get install -y python-pip python-dev xvfb chromium-browser && \ pip install --upgrade pip setuptools RUN pip install chromedriver_installer COPY ./requirements.txt /app/requirements.txt WORKDIR /app RUN pip install -r requirements.txt COPY . /app ENTRYPOINT [ "python" ] CMD [ "app.py" ] 

和requirements.txt:

 splinter==0.7.5 xvfbwrapper==0.2.8 

我发现了一个图像工作,然后击败它提交…这个解决scheme的xvfbwrapper是它不需要xvfbwrapper所以它很好,很简单。

App.py

 def hi_chrome(): # from xvfbwrapper import Xvfb from splinter import Browser # vdisplay = Xvfb() # vdisplay.start() print "spawning connector" oBrowser = Browser('chrome') oBrowser.visit("http://google.co.za") assert oBrowser.title == "Google" print "yay" # vdisplay.stop() if __name__ == '__main__': hi_chrome() 

要求:

  splinter==0.7.5 

Dockerfile

 FROM markadams/chromium-xvfb RUN apt-get update && apt-get install -y \ python python-pip curl unzip libgconf-2-4 ENV CHROMEDRIVER_VERSION 2.26 RUN curl -SLO "https://chromedriver.storage.googleapis.com/$CHROMEDRIVER_VERSION/chromedriver_linux64.zip" \ && unzip "chromedriver_linux64.zip" -d /usr/local/bin \ && rm "chromedriver_linux64.zip" COPY requirements.txt /usr/src/app/requirements.txt WORKDIR /usr/src/app RUN pip install -r requirements.txt COPY . /usr/src/app ENTRYPOINT [ "python" ] CMD [ "app.py" ]