Докер установил python 3.5.2 вместо python 3.6

Я не понимаю, почему установлен python 3.5.2, а не python 3.6. Поэтому я не могу выполнить свой файл Python, потому что я использую синтаксис строкового литерала f, который доступен только в python 3.6.

Может быть, кто-нибудь может мне помочь?

FROM envoyproxy/envoy:latest

RUN apt-get update && apt-get -q install -y \
    curl \
    software-properties-common \
    python-software-properties
RUN add-apt-repository ppa:deadsnakes/ppa
RUN apt-get update && apt-get -q install -y \
    python3.6 \
    python3-pip
RUN python3.6 --version && pip3 --version
RUN pip3 install gunicorn
ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8
RUN mkdir /code
COPY . /code
WORKDIR /code

RUN pip3 install --no-cache-dir -r ./requirements.txt
ADD ./boot.sh /usr/local/bin/boot.sh
RUN chmod u+x /usr/local/bin/boot.sh

ENTRYPOINT /usr/local/bin/boot.sh

person Oiletz Matze    schedule 15.02.2019    source источник
comment
См. Как установить Python 3.6 с помощью apt-get? поскольку изображение посланника является причиной вашего непонимания.   -  person dmulter    schedule 15.02.2019


Ответы (2)


Потому что, если мы посмотрим на образ докера envoy, мы увидим :

FROM ubuntu:16.04

RUN apt-get update \
    && apt-get upgrade -y \
    && apt-get install -y ca-certificates \
    && apt-get autoremove -y \
    && apt-get clean \
    && rm -rf /tmp/* /var/tmp/* \
    && rm -rf /var/lib/apt/lists/*
...

У которых по умолчанию python-3.5.2.

Если вам нужен python-3.6 - установите его с помощью apt или соберите свой собственный образ.

person Alex Yu    schedule 15.02.2019

Это пример докера, использующего Python 3.6.

В основном он использует другой репозиторий. Дополнительная информация доступна по этой ссылке.

Но вы можете использовать официальный образ докера Python 3.6.

Не используйте это:

FROM envoyproxy/envoy:latest

Используйте это вместо этого:

FROM python:3.6-stretch

Таким образом, пример, который вы передали, стал бы:

FROM python:3.6-stretch

RUN python3.6 --version && pip3 --version
RUN pip3 install gunicorn
ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8
RUN mkdir /code
COPY . /code
WORKDIR /code

RUN pip3 install --no-cache-dir -r ./requirements.txt
ADD ./boot.sh /usr/local/bin/boot.sh
RUN chmod u+x /usr/local/bin/boot.sh

ENTRYPOINT /usr/local/bin/boot.sh
person Lucas Araújo    schedule 15.02.2019
comment
И как вы предлагаете после этого установить envoyproxy/envoy? - person Alex Yu; 15.02.2019
comment
Прежде всего, я бы попытался использовать другой репозиторий для установки Python 3.6, потому что процесс установки кажется более простым. - person Lucas Araújo; 15.02.2019
comment
Но вы можете попробовать открыть dockerfile, который создал образ докера envoyproxy, и выполнить установку, но я немного поискал, и он создается при создании образа, и каждый раз, когда вы меняете версию envoy, вам нужно будет пересобирать, что, вероятно, займет некоторое время. - person Lucas Araújo; 15.02.2019
comment
Вы упустили суть: установить python любой версии гораздо проще, чем собрать envoyproxy. Хотя это тоже не должно быть очень сложно - person Alex Yu; 15.02.2019
comment
Вы можете отредактировать мой пост и добавить возможность использовать образ докера python 3.6 и установить envoy, поэтому у другого человека с той же проблемой будет два варианта. - person Lucas Araújo; 15.02.2019
comment
Я полагаю: гораздо проще добавить apt-get install python-3.6 в образ envoyproxy, чем установить envoyproxy в образ python. - person Alex Yu; 15.02.2019
comment
спасибо вам обоим за помощь! было бы здорово, если бы @AlexYu мог отредактировать пост. - person Oiletz Matze; 15.02.2019