-
-
Save orenitamar/f29fb15db3b0d13178c1c4dd611adce2 to your computer and use it in GitHub Desktop.
# Below are the dependencies required for installing the common combination of numpy, scipy, pandas and matplotlib | |
# in an Alpine based Docker image. | |
FROM alpine:3.4 | |
RUN echo "http://dl-8.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories | |
RUN apk --no-cache --update-cache add gcc gfortran python python-dev py-pip build-base wget freetype-dev libpng-dev openblas-dev | |
RUN ln -s /usr/include/locale.h /usr/include/xlocale.h | |
RUN pip install numpy scipy pandas matplotlib | |
I tried using both alpine:latest image and python:slim image, both throws an error:
1)alpine:latest
Dockerfile:
FROM alpine:latest
ENV LC_ALL=C.UTF-8
ENV LANG=C.UTF-8
ENV PROJ_DIR=/usr
ENV PYTHONPATH=/usr/lib/python3.7/site-packages
RUN addgroup -S appuser ; adduser -S appuser -G appuser -h /app ;
chown appuser:appuser /app
WORKDIR /app
COPY --chown=appuser:appuser / /app
RUN apk add --update --no-cache python3 libpq uwsgi-python3;
apk add --no-cache python3-dev py3-pip alpine-sdk postgresql-dev postgresql;
apk add --update --no-cache py3-numpy;
apk add libgfortran;
apk add lapack-dev;
apk add proj proj-dev;
apk add proj-util;
pip3 install --no-cache-dir --upgrade pip ;
pip3 install --upgrade setuptools;
pip3 install --no-cache-dir -r requirements.txt
EXPOSE 5432
CMD ["python3", "/app/subscriber_db.py", "/app/resolver.py"]
Requirements:
numpy==1.14.3
pandas==1.0.5
sqlalchemy==1.3.16
paho-mqtt==1.5.0
psycopg2==2.8.5
six==1.14.0
requests==2.24.0
cython
pyproj
scipy==1.3.1
statistics==1.0.3.5
matplotlib
Console Output:
PS C:\Users\thangaraj\PycharmProjects> docker build -t grs-docker .
Collecting scipy==1.3.1
Downloading scipy-1.3.1.tar.gz (23.6 MB)
Installing build dependencies: started
Installing build dependencies: still running...
Installing build dependencies: still running...
Installing build dependencies: still running...
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
.
.
.
.
numpy.distutils.system_info.NotFoundError: No lapack/blas resources found.
----------------------------------------
ERROR: Command errored out with exit status 1: /usr/bin/python3 /usr/lib/python3.8/site-packages/pep517/_in_process.py prepare_metadata_for_build_wheel /tmp/tmp9m_79xyv Check the logs for full command output.
The command '/bin/sh -c apk add --update --no-cache python3 libpq uwsgi-python3; apk add --no-cache python3-dev py3-pip alpine-sdk postgresql-dev postgresql; apk add --update --no-cache py3-numpy; apk add libgfortran; apk add
lapack-dev; apk add proj proj-dev; apk add proj-util; pip3 install --no-cache-dir --upgrade pip ; pip3 install --upgrade setuptools; pip3 install --no-cache-dir -r requirements.txt' returned a non-zero code: 1
2) python:slim (I think its not suited for hosting postgresql DB)
Console logs:
PS C:\Users\thangaraj\PycharmProjects> docker build -t grs-docker .
Sending build context to Docker daemon 1.394MB
Step 1/10 : FROM python:slim
slim: Pulling from library/python
8559a31e96f4: Pull complete
62e60f3ef11e: Pull complete
93c8ae153782: Pull complete
ea222f757df7: Pull complete
e97d3933bbbe: Pull complete
Digest: sha256:938fd520a888e9dbac3de374b8ba495cc50fe96440030264a40f733052001895
Status: Downloaded newer image for python:slim
.
.
.
chown: invalid user: ‘appuser:appuser’
The command '/bin/sh -c addgroup -S appuser ; adduser -S appuser -G appuser -h /app ; chown appuser:appuser /app' returned a non-zero code: 1
Could anyone help/ advice me with these errors? I would really appreciate it. Thanks in advance.
Thanks @orenitamar.
@mkdthanga: The following worked for me - I simply used python3-alpine build, and removed python
, python-dev
and py-pip
from the apk command (line 5, OP):
FROM python:3-alpine
WORKDIR /usr/source/app
COPY requirements.txt ./
RUN apk update
RUN echo "http://dl-8.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories
RUN apk --no-cache --update-cache add gcc gfortran build-base wget freetype-dev libpng-dev openblas-dev
RUN ln -s /usr/include/locale.h /usr/include/xlocale.h
RUN pip install --no-cache-dir -r requirements.txt
I'm getting
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz fetch http://dl-8.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz ERROR: unsatisfiable constraints: so:libgfortran.so.5 (missing): required by: openblas-ilp64-0.3.3-r2[so:libgfortran.so.5] openblas-ilp64-0.3.3-r2[so:libgfortran.so.5] openblas-0.3.3-r2[so:libgfortran.so.5] openblas-0.3.3-r2[so:libgfortran.so.5] The command '/bin/sh -c apk --no-cache --update-cache add gcc gfortran python python-dev py-pip build-base wget freetype-dev libpng-dev openblas-dev' returned a non-zero code: 4
Had the same issue... changed the repos from dl-8 to CDN and it worked!
Here's the new Dockerfile
FROM alpine:3.4 RUN echo "http://dl-cdn.alpinelinux.org/alpine/latest-stable/main" > /etc/apk/repositories RUN echo "http://dl-cdn.alpinelinux.org/alpine/latest-stable/community" >> /etc/apk/repositories RUN apk --no-cache --update-cache add gcc gfortran python python-dev py-pip build-base wget freetype-dev libpng-dev openblas-dev RUN ln -s /usr/include/locale.h /usr/include/xlocale.h RUN pip install numpy scipy pandas matplotlib
Thanks man your answers solved my problem!
I had various problems on the way starting FROM alpine, FROM python:alpine, but with the following I had a smooth docker build experience:
FROM python:slim pip install numpy scipy
I assume you can add matplotlib and pandas as extra packages without problems.
See https://pythonspeed.com/articles/alpine-docker-python/ for my choice to start from python:slim.
Thanks - this is a great option for my use case
In case you cant move to slim-buster, the natural answer to this is
pip install --extra-index-url https://alpine-wheels.github.io/index ...
Hi, can anyone help. I tried to execute the line in the Docker file but it takes very long to run .
Can anyone can help and what should i do ?
i didn't include panda version in my requirements - i tried but it run error . should i include and what version ? thanks
Pull a pre-built alpine docker image with nginx and python3 installed
FROM tiangolo/uwsgi-nginx-flask:python3.6-alpine3.7
ENV LISTEN_PORT=8000
EXPOSE 8000
COPY /app /app
RUN echo "http://dl-8.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories
RUN apk --no-cache --update-cache add gcc gfortran python python-dev py-pip build-base wget freetype-dev libpng-dev openblas-dev
RUN ln -s /usr/include/locale.h /usr/include/xlocale.h
RUN pip install pandas
Thanks @orenitamar.
@mkdthanga: The following worked for me - I simply used python3-alpine build, and removed
python
,python-dev
andpy-pip
from the apk command (line 5, OP):FROM python:3-alpine WORKDIR /usr/source/app COPY requirements.txt ./ RUN apk update RUN echo "http://dl-8.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories RUN apk --no-cache --update-cache add gcc gfortran build-base wget freetype-dev libpng-dev openblas-dev RUN ln -s /usr/include/locale.h /usr/include/xlocale.h RUN pip install --no-cache-dir -r requirements.txt
This leads to ERROR: Failed building wheel for pyarrow
for me
@Frikster If you are using python:3-alpine
which means you prefer the latest python3.10
version, you could consider using package from alpine instead of from pip.
This way need python package from alpine!!!!
FROM alpine:3.16
RUN apk --no-cache --update-cache add python3 py3-pip py3-arrow py3-pandas # and py3-anything package need to be compiled
RUN pip install --no-cache-dir -r requirements.txt
=> ERROR [6/8] RUN apk --no-cache --update-cache add gcc gfortran python python-dev py-pip build-base wget freetype-dev libpng-dev openblas-dev 5.3s
[6/8] RUN apk --no-cache --update-cache add gcc gfortran python python-dev py-pip build-base wget freetype-dev libpng-dev openblas-dev:
nity/x86_64/APKINDEX.tar.gz
#11 5.137 WARNING: Ignoring http://dl-8.alpinelinux.org/alpine/edge/community: DNS lookup error
#11 5.215 ERROR: unable to select packages:
#11 5.252 python (no such package):
#11 5.252 required by: world[python]
#11 5.252 python-dev (no such package):
#11 5.252 required by: world[python-dev]
executor failed running [/bin/sh -c apk --no-cache --update-cache add gcc gfortran python python-dev py-pip build-base wget freetype-dev libpng-dev openblas-dev]: exit code: 2
I am getting error like this pls can anyone help me out
@sanderzz91 Thanks!