Изображение Alpine Docker ОТ python: 3.x-alpine3.x использует версию пакета, отличную от заявленной для Python - PullRequest
2 голосов
/ 23 апреля 2019

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

FROM python:3.7-alpine3.9

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

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

Однакоесли я устанавливаю некоторые пакеты, для которых требуется Python3, например python3-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 также показывает, что (во время сборки образа Docker) используется версия 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?

Ответы [ 2 ]

1 голос
/ 24 апреля 2019

Если вы предварительно удалите ( virtual ) .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)
...
0 голосов
/ 23 апреля 2019

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

FROM python:3.6-alpine3.9

или

FROM python:3.6.8-alpine
FROM python:3.6-alpine
FROM python:3.6.8-alpine3.9
...