-
-
Save wr0ngway/b4a4ede02b1219817a6dfce092e1e3fa to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FROM alpine:3.3 | |
# http://bugs.python.org/issue19846 | |
# > At the moment, setting "LANG=C" on a Linux system *fundamentally breaks Python 3*, and that's not OK. | |
ENV LANG C.UTF-8 | |
# gpg: key F73C700D: public key "Larry Hastings <larry@hastings.org>" imported | |
ENV GPG_KEY 97FC712E4C024BBEA48A61ED3A5CA953F73C700D | |
ENV PYTHON_VERSION 3.5.1 | |
# if this is called "PIP_VERSION", pip explodes with "ValueError: invalid truth value '<VERSION>'" | |
ENV PYTHON_PIP_VERSION 8.1.2 | |
RUN set -ex \ | |
&& apk add --no-cache --virtual .fetch-deps curl gnupg \ | |
&& curl -fSL "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz" -o python.tar.xz \ | |
&& curl -fSL "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc" -o python.tar.xz.asc \ | |
&& export GNUPGHOME="$(mktemp -d)" \ | |
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPG_KEY" \ | |
&& gpg --batch --verify python.tar.xz.asc python.tar.xz \ | |
&& rm -r "$GNUPGHOME" python.tar.xz.asc \ | |
&& mkdir -p /usr/src \ | |
&& tar -xJC /usr/src -f python.tar.xz \ | |
&& mv "/usr/src/Python-$PYTHON_VERSION" /usr/src/python \ | |
&& rm python.tar.xz \ | |
&& apk del .fetch-deps \ | |
\ | |
&& apk add --no-cache --virtual .build-deps \ | |
bzip2-dev \ | |
gcc \ | |
libc-dev \ | |
linux-headers \ | |
make \ | |
ncurses-dev \ | |
openssl-dev \ | |
pax-utils \ | |
readline-dev \ | |
sqlite-dev \ | |
xz-dev \ | |
zlib-dev \ | |
&& cd /usr/src/python \ | |
&& ./configure --enable-shared --enable-unicode=ucs4 --with-pydebug \ | |
&& make -j$(getconf _NPROCESSORS_ONLN) CFLAGS="-g -fno-inline -fno-strict-aliasing" \ | |
&& make install \ | |
&& pip3 install --no-cache-dir --upgrade --ignore-installed pip==$PYTHON_PIP_VERSION \ | |
&& find /usr/local -depth \ | |
\( \ | |
\( -type d -a -name test -o -name tests \) \ | |
-o \ | |
\( -type f -a -name '*.pyc' -o -name '*.pyo' \) \ | |
\) -exec rm -rf '{}' + \ | |
&& runDeps="$( \ | |
scanelf --needed --nobanner --recursive /usr/local \ | |
| awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \ | |
| sort -u \ | |
| xargs -r apk info --installed \ | |
| sort -u \ | |
)" \ | |
&& apk add --virtual .python-rundeps $runDeps \ | |
&& apk del .build-deps \ | |
&& rm -rf ~/.cache | |
# make some useful symlinks that are expected to exist | |
RUN cd /usr/local/bin \ | |
&& ln -s easy_install-3.5 easy_install \ | |
&& ln -s idle3 idle \ | |
&& ln -s pydoc3 pydoc \ | |
&& ln -s python3 python \ | |
&& ln -s python3-config python-config | |
RUN echo "add-auto-load-safe-path /usr/src/python" > /root/.gdbinit | |
CMD ["python3"] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment