2015-09-26 7 views
7

Я получаю это предупреждение при создании моего Docker изображения:InsecurePlatformWarning при создании Docker изображений

/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:79: 
     InsecurePlatformWarning: A true SSLContext object is not available. 
     This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. 
     For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning. 

Несколько источники (как InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately) говорят, что pip install pyopenssl ndg-httpsclient pyasn1 будет решить эту проблему. Но я получаю предупреждение, как только pip пытается установить pyopenssl.

Вот мой Dockerfile:

FROM ubuntu:14.04 

# Install packages 
RUN apt-get update && apt-get install -y \ 
    git \ 
    libmysqlclient-dev \ 
    mysql-server \ 
    nginx \ 
    python-dev \ 
    python-mysqldb \ 
    python-setuptools \ 
    supervisor \ 
    vim 
RUN easy_install pip 

# Handle urllib3 InsecurePlatformWarning 
RUN apt-get install -y libffi-dev libssl-dev 
RUN pip install pyopenssl ndg-httpsclient pyasn1 

# ...more 
+0

попробуйте использовать флаг -upgrade как: 'RUN pip install --upprade pyopenssl ndg-httpsclient pyasn1' – dopstar

+0

Не повезло (что имеет смысл, поскольку нет существующих ng пакеты для обновления для обновления при создании образа Docker - если я не ошибаюсь 'pip install --upgrade'). –

+0

попробуйте добавить 'libpython2.7-dev' в' RUN apt-get install -y libffi-dev libssl-dev'. также лучше «pip install requests [security]» вместо «pip install pyopenssl» – ahmed

ответ

2

кажется, что это предупреждение, как ожидается, при работе пипа: http://github.com/pypa/pip/issues/2681, но, как вы устанавливаете pyopenssl ndg-httpsclient pyasn1, вы не будете получать предупреждения при использовании запросов питона.

Например, если я построю этот Dockerfile:

FROM ubuntu:14.04 

# Install packages 
RUN apt-get update && apt-get install -y \ 
    git \ 
    libmysqlclient-dev \ 
    mysql-server \ 
    nginx \ 
    python-dev \ 
    python-mysqldb \ 
    python-setuptools \ 
    supervisor \ 
    vim 
RUN easy_install pip 
RUN pip install requests 

, а затем запустить это внутри контейнера:

[email protected]:/# python 
Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 

>>> import requests 

>>> url = "https://www.digicert.com/" 

>>> r = requests.get(url) 

/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:100: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning. 

    InsecurePlatformWarning 

Как вы можете видеть, я получаю предупреждение. Но если добавить эти строки в Dockerfile:

RUN apt-get install -y libffi-dev libssl-dev 
RUN pip install pyopenssl ndg-httpsclient pyasn1 

и запустить ту же команду, питон, я не получаю предупреждение больше.

Если вы действительно не хотите, чтобы предупреждение при установке pyopenssl, вы можете установить переменную окружения: PYTHONWARNINGS="ignore:a true SSLContext object" как предложено здесь: https://github.com/pypa/pip/pull/3109

Ваш Dockerfile будет выглядеть следующим образом:

FROM ubuntu:14.04 

# Install packages 
RUN apt-get update && apt-get install -y \ 
    git \ 
    libmysqlclient-dev \ 
    mysql-server \ 
    nginx \ 
    python-dev \ 
    python-mysqldb \ 
    python-setuptools \ 
    supervisor \ 
    vim 
RUN easy_install pip 

# Handle urllib3 InsecurePlatformWarning 
RUN apt-get install -y libffi-dev libssl-dev 
ENV PYTHONWARNINGS="ignore:a true SSLContext object" 
RUN pip install pyopenssl ndg-httpsclient pyasn1 

другой решение будет заключаться в том, чтобы обновить python до 2.7.9.