diff --git a/Dockerfile b/Dockerfile index 3d3c0c9..e9bbec8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,21 +3,33 @@ FROM howgood/base -################################################ -# Copied from python:2.7 https://goo.gl/mz3Aww # -################################################ +############################################### +# Copied from python:3.6 https://git.io/vDARg # +############################################### -RUN apt-get purge -y python.* - -# gpg: key 18ADD4FF: public key "Benjamin Peterson " imported -ENV GPG_KEY C01E1CAD5EA2C4F0B8E3571504C367C218ADD4FF +ENV PATH /usr/local/bin:$PATH ENV LANG C.UTF-8 -ENV PYTHON_VERSION 2.7.12 + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + tcl \ + tk \ + wget \ + && rm -rf /var/lib/apt/lists/* + +ENV GPG_KEY 0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D +ENV PYTHON_VERSION 3.6.0 RUN set -ex \ - && 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 \ + && buildDeps=' \ + tcl-dev \ + tk-dev \ + ' \ + && apt-get update && apt-get install -y $buildDeps --no-install-recommends && rm -rf /var/lib/apt/lists/* \ + \ + && wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz" \ + && wget -O python.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.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 \ @@ -27,24 +39,40 @@ RUN set -ex \ && rm python.tar.xz \ \ && cd /usr/src/python \ - && ./configure --enable-shared --enable-unicode=ucs4 \ + && ./configure \ + --enable-loadable-sqlite-extensions \ + --enable-shared \ && make -j$(nproc) \ && make install \ && ldconfig \ - && curl -fSL 'https://bootstrap.pypa.io/get-pip.py' | python2 \ - && pip install --no-cache-dir --upgrade --force-reinstall pip \ - && find /usr/local -depth \ - \( -type d -a -name test -o -name tests \) \ - -o \( -type f -a -name '*.pyc' -o -name '*.pyo' \) \ - -exec rm -rf '{}' + \ - && rm -rf /usr/src/python ~/.cache /tmp/* + \ + && if [ ! -e /usr/local/bin/pip3 ]; then : \ + && curl -fSL -o /tmp/get-pip.py 'https://bootstrap.pypa.io/get-pip.py' \ + && python3 /tmp/get-pip.py \ + && rm /tmp/get-pip.py \ + ; fi \ + && pip3 install --no-cache-dir --upgrade --force-reinstall pip \ + && find /usr/local -depth \ + \( \ + \( -type d -a -name test -o -name tests \) \ + -o \ + \( -type f -a -name '*.pyc' -o -name '*.pyo' \) \ + \) -exec rm -rf '{}' + \ + && apt-get purge -y --auto-remove $buildDeps \ + && rm -rf /usr/src/python ~/.cache /tmp/* + +# make some useful symlinks that are expected to exist +RUN cd /usr/local/bin \ + && { [ -e easy_install ] || ln -s easy_install-* easy_install; } \ + && ln -s idle3 idle \ + && ln -s pydoc3 pydoc \ + && ln -s python3 python \ + && ln -s python3-config python-config ############ # End copy # ############ # Python env -ENV PYTHONDONTWRITEBYTECODE=1 \ - PYTHONUNBUFFERED=1 \ - C_FORCE_ROOT=1 \ +ENV C_FORCE_ROOT=1 \ XDG_CACHE_HOME=/tmp