google-app-engine - 托管 VM 添加到 PATH

在 Google App Engine's Python runtime for Managed VMS ,我要安装Splinter ( Selenium )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

我无法让 Web 应用程序使用 chrome webdriver 启动 Splinter,因为它在 PATH 中找不到它。

WebDriverException: Message: 'chromedriver' executable needs to be
available in the path. Please look at
http://docs.seleniumhq.org/download/#thirdPartyDrivers
and read up at
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 中的正确方法是什么,或任何解决方法?

非常感谢

最佳答案

您需要查看 ENTRYPOINTCMD与该图像相关联(在您启动的容器上执行 docker inspect)

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

如果是这种情况,请确保 profile.bashrc定义权利 PATH修改 COPY 更容易(例如,使用自定义 .bashrcENV) .

https://stackoverflow.com/questions/29764154/

相关文章:

java - 如何在 Hadoop 中对自定义可写类型进行排序

apache-spark - Spark的示例在客户端模式下引发FileNotFoundExcept

python - Fedora 22 : ERROR: No module named '_rpmb

hadoop - Spring Cloud Dataflow-http |卡夫卡和卡夫卡| hdfs

nginx - 多个网站在Docker容器中运行,如何实现?

hadoop - Luigi可以运行远程Hadoop作业吗?

hadoop - HDFS的默认 block 大小为128 MB,而Hive的默认 strip 大小

hadoop - 如何将新记录更新到临时表中的主表

amazon-web-services - 需要有关数据管道创建的设计输入

hadoop - 为什么 hive 中的CTAS查询没有得到预期的结果?