FROM debian:12.11
ARG U_NAME="user"
ARG U_ID="1000"
RUN adduser --disabled-password --gecos '' --uid ${U_ID} ${U_NAME}
WORKDIR /home/${U_NAME}
#=================================#
# compile our own Python
USER root
RUN apt-get update && apt-get install -y \
build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev \
wget \
sudo \
# !! must be installed _before_ Python compile for proper linking
lzma liblzma-dev \
&& rm -rf /var/lib/apt/lists/*
# !! temp sudo for userspace build/install
RUN adduser ${U_NAME} sudo
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
USER ${U_NAME}
ARG THE_PY_3_VER="3.13.5"
RUN wget https://www.python.org/ftp/python/${THE_PY_3_VER}/Python-${THE_PY_3_VER}.tgz
RUN \
tar -xvf Python-${THE_PY_3_VER}.tgz && \
cd Python-${THE_PY_3_VER} && \
./configure --enable-optimizations \
# !! for pyinstaller
#--enable-shared \
--prefix=/usr/local --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib" \
&& \
sudo make -j 4 && \
sudo make altinstall && \
cd /home/${U_NAME} && sudo rm -rf ./Python-${THE_PY_3_VER}.tgz ./Python-${THE_PY_3_VER}
# !! undo permission elevate
USER root
RUN deluser ${U_NAME} sudo
#=================================#