Образ Alpine Docker ИЗ python: 3.x-alpine3.x использует другую версию пакета для Python, чем указано

Если я создам самый простой образ докера на основе Alpine, который включает Python:

FROM python:3.7-alpine3.9

Я могу успешно ввести его и убедиться, что установлена ​​версия 3.7:

/ # python --version
Python 3.7.3
/ # python3 --version
Python 3.7.3

Однако, если я устанавливаю некоторые пакеты, для которых требуется Python3, например examplepython3-dev (который требуется для других пакетов) или сам Python3, Alpine не использует версию 3.7, а использует 3.6 по какой-то причине, которую я не понимаю:

/ # apk add python3-dev
(1/3) Installing pkgconf (1.6.0-r0)
(2/3) Installing python3 (3.6.8-r2)
(3/3) Installing python3-dev (3.6.8-r2)
Executing busybox-1.29.3-r10.trigger
OK: 108 MiB in 38 packages

printenv также показывает, что (во время сборки образа докера) используется версия 3.7.x, но система пакетов не отражает этого. Отрывок:

PYTHON_VERSION=3.7.3

Я вижу здесь Python 3.6 как версию по умолчанию для всех версий Alpine. до 3,9. Python 3.7 доступен только для «грани».

Я также нашел ответ на this, который тоже не работает:

# apk add python3 --repository=http://dl-cdn.alpinelinux.org/alpine/edge/main
(1/1) Installing python3 (3.6.8-r2)

Установлен Python 3.6. Однако, если я использую самый простой Alpine без Python FROM alpine:3.9 и использую ту же команду, Python 3.7 установлен:

# apk add python3 --repository=http://dl-cdn.alpinelinux.org/alpine/edge/main
<TRIMMED_TEXT>
(11/11) Installing python3 (3.7.3-r0)

Как я могу указать диспетчеру пакетов в python:3.7-alpine3.9 использовать Python 3.7 вместо Python 3.6?


person dwich    schedule 23.04.2019    source источник
comment
Решил ли ответ вашу проблему? Пожалуйста, закройте это. В противном случае я постараюсь вам помочь дальше.   -  person bellackn    schedule 11.09.2019


Ответы (2)


Если вы удалите (виртуальный ) .python-rundeps, установка будет работать так, как вы предполагали.

FROM python:3.7-alpine3.9

RUN \
    apk update \
    && apk del .python-rundeps \
    && apk add --repository=http://dl-cdn.alpinelinux.org/alpine/edge/main \
        python3-dev=3.7.3-r0

Создание этого изображения приводит к:

...
(12/13) Installing python3 (3.7.3-r0)
...
person bellackn    schedule 23.04.2019

Вам нужен Python версии 3.7? Можно использовать версию 3.6, она существует: https://hub.docker.com/_/python/?tab=tags&page=3

FROM python:3.6-alpine3.9

or

FROM python:3.6.8-alpine
FROM python:3.6-alpine
FROM python:3.6.8-alpine3.9
person Pablo López Gallego    schedule 23.04.2019