|
1 | 1 | ARG CIRCLE_PULL_REQUEST |
2 | | -FROM debian:bullseye-20241111-slim AS builder |
| 2 | +FROM deepnote/python:base${CIRCLE_PULL_REQUEST:+-ra-${CIRCLE_PULL_REQUEST##*/}} |
3 | 3 |
|
4 | 4 | # Install dependencies for building Python |
5 | 5 | RUN apt-get update && apt-get install -y --no-install-recommends \ |
6 | | - wget \ |
7 | | - cmake \ |
8 | 6 | build-essential \ |
9 | | - libssl-dev \ |
10 | 7 | zlib1g-dev \ |
11 | 8 | libncurses5-dev \ |
12 | | - libncursesw5-dev \ |
13 | | - libreadline-dev \ |
14 | | - libsqlite3-dev \ |
15 | 9 | libgdbm-dev \ |
16 | | - libdb5.3-dev \ |
17 | | - libbz2-dev \ |
18 | | - libexpat1-dev \ |
19 | | - liblzma-dev \ |
20 | | - tk-dev \ |
| 10 | + libnss3-dev \ |
| 11 | + libssl-dev \ |
| 12 | + libreadline-dev \ |
21 | 13 | libffi-dev \ |
22 | | - uuid-dev \ |
| 14 | + libsqlite3-dev \ |
23 | 15 | ca-certificates \ |
24 | 16 | && apt-get clean \ |
25 | 17 | && rm -rf /var/lib/apt/lists/* |
26 | 18 |
|
27 | 19 | # Download and extract the Python source code |
28 | | -WORKDIR /tmp |
29 | | -ARG PYTHON_VERSION_PATCH |
30 | | -RUN wget -qO- "https://www.python.org/ftp/python/${PYTHON_VERSION_PATCH}/Python-${PYTHON_VERSION_PATCH}.tgz" | tar xvz \ |
31 | | - && cd "/tmp/Python-${PYTHON_VERSION_PATCH}" \ |
32 | | - && ./configure --enable-optimizations --with-ensurepip=install \ |
| 20 | +ARG PYTHON_VERSION |
| 21 | +RUN cd "/tmp" \ |
| 22 | + && wget -qO- "https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz" | tar xvz \ |
| 23 | + && cd "/tmp/Python-${PYTHON_VERSION}" \ |
| 24 | + && ./configure --enable-optimizations --with-ensurepip=install \ |
33 | 25 | && make -j "$(nproc)" \ |
34 | 26 | && make altinstall |
35 | 27 |
|
36 | | - |
37 | | -FROM deepnote/python:base${CIRCLE_PULL_REQUEST:+-ra-${CIRCLE_PULL_REQUEST##*/}} |
38 | | -# Copy Python from the builder stage |
39 | | -ARG PYTHON_VERSION |
40 | | -# Layers will be different between python versions from here onwards because of the build-arg |
41 | | - |
42 | | -COPY --from=builder "/usr/local/bin/python${PYTHON_VERSION}" "/usr/local/bin/python${PYTHON_VERSION}" |
43 | | -COPY --from=builder "/usr/local/bin/pip${PYTHON_VERSION}" "/usr/local/bin/pip${PYTHON_VERSION}" |
44 | | -COPY --from=builder "/usr/local/lib/python${PYTHON_VERSION}" "/usr/local/lib/python${PYTHON_VERSION}" |
45 | | - |
46 | | -RUN update-alternatives --install /usr/bin/python python "/usr/local/bin/python${PYTHON_VERSION}" 1 |
47 | | -RUN update-alternatives --install /usr/bin/pip pip "/usr/local/bin/pip${PYTHON_VERSION}" 1 |
| 28 | +RUN PYTHON_MAJOR_MINOR_VERSION="${PYTHON_VERSION%.*}" \ |
| 29 | + && ln -s /usr/local/bin/python${PYTHON_MAJOR_MINOR_VERSION} /usr/local/bin/python \ |
| 30 | + && ln -s /usr/local/bin/pip${PYTHON_MAJOR_MINOR_VERSION} /usr/local/bin/pip |
48 | 31 |
|
49 | 32 | # We create the virtual environment in the home directory in the Dockerfile |
50 | 33 | # for performance improvement. |
|
0 commit comments