2015-04-21 53 views
1

Google App Engine's Python runtime for Managed VMS,我想安装Splinter(硒)Chromedriver。根据用于Linux的文档,我有我的dockerfile如下:托管虚拟机添加到路径

# Dockerfile extending the generic Python image with application files for a 
# single application. 
FROM gcr.io/google_appengine/python-compat 

RUN apt-get update && apt-get install -y apt-utils zip unzip wget 

ADD requirements.txt /app/ 
RUN pip install -r requirements.txt 

RUN cd $HOME/ 
RUN wget https://chromedriver.googlecode.com/files/chromedriver_linux64_20.0.1133.0.zip 
RUN unzip chromedriver_linux64_20.0.1133.0.zip 

RUN mkdir -p $HOME/bin 
RUN mv chromedriver /bin 
ENV PATH "$PATH:$HOME/bin" 

ADD . /app 

,因为它没有在PATH找到它,我不能让Web应用程序开始与镀铬的webdriver分裂。

WebDriverException:消息: 'chromedriver' 可执行需要是
在路径可用。请看看
http://docs.seleniumhq.org/download/#thirdPartyDrivers

http://code.google.com/p/selenium/wiki/ChromeDriver

念起来,如果我跑docker exec -it <container id> chromedriver,符合市场预期,这是行不通的。

此外,在Python打印出环境变量是:

➜ ~ docker exec -it f4d9541c4ba6 python 
Python 2.7.3 (default, Mar 13 2014, 11:03:55) 
[GCC 4.7.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import os 
>>> print os.environ 
{'GAE_MODULE_NAME': 'parsers', 'API_HOST': '10.0.2.2', 'GAE_SERVER_PORT': '8082', 'MODULE_YAML_PATH': 'parsers.yaml', 'HOSTNAME': 'f4d9541c4ba6', 'SERVER_SOFTWARE': 'Development/2.0', 'GAE_MODULE_INSTANCE': '0', 'DEBIAN_FRONTEND': 'noninteractive', 'GAE_MINOR_VERSION': '580029170989395749', 'API_PORT': '59768', 'GAE_PARTITION': 'dev', 'GAE_LONG_APP_ID': 'utix-app', 'PATH': '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', 'GAE_MODULE_VERSION': 'parsers-0-0-1', 'HOME': '/root'} 

会是什么使得chromedriver在PATH,或任何解决方法的正确方法?

非常感谢

回答

0

您需要检查ENTRYPOINT并与图像(你启动的容器上的docker inspect

如果图像设置为打开一个新的bash会话相关CMD,该与运行该会话的帐户关联的profile.bashrc可能会重新定义$PATH,覆盖Dockerfile ENV PATH "$PATH:$HOME/bin"指令。

如果是这样的情况下,确保profile.bashrc定义权PATH更容易(与例如自定义.bashrcCOPY),修改了ENV

+0

检查给 “CMD”:空, “Entrpypoint”: “/usr/bin/python2.7”, “/home/vmagent/python_vm_runtime/vmboot.py”] 我相信这是它的情况被覆盖。我将如何去做配置文件复制?对不起,我是新来的码头:) –

+0

@MichaelGradek首先,尝试打印容器python会话(http://stackoverflow.com/a/4907053/6309)中的环境变量,以查看PATH是继承的还是不。 – VonC

+0

看一下http://googleappengine.googlecode.com/svn/trunk/python/wrapper_util.py,看起来'GAE_SDK_ROOT'也应该被定义为:你可以将它添加到Dockerfile中吗? – VonC