Я хочу использовать некоторые пакеты от Ubuntu до Alpine - PullRequest
0 голосов
/ 10 июля 2019

У меня есть файл Docker альпийского изображения с Python. В нем есть колба, json и т. Д. Я хочу добавить пакеты numpy и rasterio в файл Docker. В тех, что я нашел на докер-хабе или в сети, были только пакеты для Ubuntu, но они мне нужны для альпийского образа. Пожалуйста, предложите

FROM alpine
RUN apk add python3 py-pip && pip install flask flask_json flask_cors 
requests pymongo 


WORKDIR /source
COPY . .
ENV FLASK_APP app.py
ENV FLASK_ENV development
EXPOSE 5000

CMD ["python", "-m", "flask", "run", "--host=0.0.0.0"]

Я хочу добавить их в файл Docker:

$ sudo add-apt-repository ppa:ubuntugis/ppa
$ sudo apt-get update
$ sudo apt-get install python-numpy gdal-bin libgdal-dev
$ pip install rasterio

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Нет ничего плохого в использовании образа Docker на основе Ubuntu. Это будет несколько больше, чем изображение на альпийской основе, но эта разница в пространстве обычно не является значительной.

Также обратите внимание, что существует официальный Docker Hub python образ с предустановленными различными версиями интерпретатора, основанный как на Debian, так и на Alpine. (Вам может понадобиться установить software-properties-common, чтобы использовать add-apt-repository на базе Debian .) Так что самый простой Dockerfile с предустановленным Python 3 и способный выполнять эти команды APT, может выглядеть как

FROM python:3-stretch
RUN apt-get update && apt-get install software-properties-common
RUN add-apt-repository ppa:ubuntugis/ppa
RUN apt-get update && apt-get install gdal-bin libgdal-dev
WORKDIR /source
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
ET cetera

где в файле requirements.txt перечислены все пакеты Python, которые вам нужно установить , точно так же, как вы использовали бы в своей виртуальной среде, отличной от Docker, которую вы используете для повседневной работы. день развития.

0 голосов
/ 10 июля 2019

ppa - это личный пакет пакетов ubuntu, он позволяет использовать пакет deb, его нельзя использовать в alpine.Используйте следующую, чтобы найти один в альпийском:

orange@orange:~$ docker run -it alpine /bin/sh
/ # apk update
/ # apk list | grep numpy
py2-numpy-f2py-1.16.4-r1 x86_64 {py-numpy} (BSD-3-Clause)
py-numpy-f2py-1.16.4-r1 x86_64 {py-numpy} (BSD-3-Clause)
py-numpy-doc-1.16.4-r1 x86_64 {py-numpy} (BSD-3-Clause)
py3-numpy-1.16.4-r1 x86_64 {py-numpy} (BSD-3-Clause)
py-numpy-1.16.4-r1 x86_64 {py-numpy} (BSD-3-Clause)
py-numpy-dev-1.16.4-r1 x86_64 {py-numpy} (BSD-3-Clause)
py2-numpy-1.16.4-r1 x86_64 {py-numpy} (BSD-3-Clause)
py3-numpy-f2py-1.16.4-r1 x86_64 {py-numpy} (BSD-3-Clause)

И в соответствии с this , gdal находится в источнике тестирования края, затем вам также нужно добавить его в список apk.

Таким образом, в соответствии с описанными выше методами, наконец, работоспособный Dockerfile, как показано ниже:

FROM alpine

RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories
RUN apk update && \
    apk add python3 python3-dev py3-numpy py-numpy-dev gdal gdal-dev build-base musl-dev && \
    pip3 install rasterio flask flask_json flask_cors requests pymongo

С помощью выше вы можете добавить к нему другие вещи, чтобы сформировать ваш окончательный dockerfile.

...