Is there a best practice on setting up glibc on docker alpine linux base image with correct paths so any spawned process can correctly reference the location of the installe
Yes there is,
I've used a custom built glibc to install a JRE on it.
You can find it here
You can use wget or curl to get the code and apk to install them
UPDATED commands see comments below
apk --no-cache add ca-certificates wget
wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub
wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.28-r0/glibc-2.28-r0.apk
apk add glibc-2.28-r0.apk
It worked perfectly for me
apk add libgcc
It seems that this makes glibc
available.
This increases the size of the image by a few MB.
I had create a github repo Docker build for glibc for alpine, support multi-arch, i.e. x86_64, aarch64, etc. You can build from the latest glibc source for any CPU type in just one line command. It was forked from sgerrand's repo, I modified to support multi-arch and combine builder stage and packaging stage into one single line. Or you could just download the pre-built packages from release page.
The best practice is to not install glibc on Alpine Linux. It uses musl libc instead, a lightweight, fast, simple and standards-conform C library (i.e. everything that glibc is not).
Instead of installing glibc on Alpine, build and/or package your dependent software packages and libraries for Alpine.
For python packages, the setup.py program will often recompile, rather than downloading a prebuild binary, when run on Alpine.
For java, use alpine openjdk instead of Oracle.
For faiss, and other numpy-dependent libraries in python (copied from https://gist.github.com/orenitamar/f29fb15db3b0d13178c1c4dd611adce2)
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