FROM ubuntu:22.04 AS python-builder
ENV DEBIAN_FRONTEND=noninteractive
ARG PYTHON_VERSION=3.11.4
ARG PYTHON_MAJOR_MINOR=3.11
RUN apt-get update && apt-get install -y \
wget \
build-essential \
zlib1g-dev \
libncurses5-dev \
libgdbm-dev \
libnss3-dev \
libssl-dev \
libreadline-dev \
libffi-dev \
libsqlite3-dev \
libbz2-dev \
liblzma-dev \
&& rm -rf /var/lib/apt/lists/*
RUN wget --timeout=30 --tries=3 \
https://repo.huaweicloud.com/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz \
-O /tmp/python.tgz || \
wget --timeout=30 --tries=3 \
https://mirrors.tuna.tsinghua.edu.cn/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz \
-O /tmp/python.tgz || \
wget --timeout=30 --tries=3 \
https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz \
-O /tmp/python.tgz && \
tar -xzf /tmp/python.tgz -C /tmp && \
cd /tmp/Python-${PYTHON_VERSION} && \
./configure \
--prefix=/usr/local \
--enable-shared \
--without-ensurepip \
LDFLAGS="-Wl,-rpath=/usr/local/lib" && \
make -j$(nproc) && \
make install && \
cd / && \
rm -rf /tmp/Python-${PYTHON_VERSION} /tmp/python.tgz
RUN wget --timeout=30 --tries=3 \
https://bootstrap.pypa.io/get-pip.py -O /tmp/get-pip.py && \
/usr/local/bin/python${PYTHON_MAJOR_MINOR} /tmp/get-pip.py -i https://pypi.tuna.tsinghua.edu.cn/simple && \
rm /tmp/get-pip.py
RUN find /usr/local -type d -name '__pycache__' -exec rm -rf {} + 2>/dev/null || true && \
find /usr/local -type d -name 'test' -exec rm -rf {} + 2>/dev/null || true && \
find /usr/local -type d -name 'tests' -exec rm -rf {} + 2>/dev/null || true && \
find /usr/local -type f -name '*.pyc' -delete && \
find /usr/local -type f -name '*.pyo' -delete
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
ARG PYTHON_MAJOR_MINOR=3.11
RUN apt-get update && apt-get install -y \
ca-certificates \
libssl3 \
libsqlite3-0 \
libreadline8 \
libffi8 \
libbz2-1.0 \
liblzma5 \
tini \
&& rm -rf /var/lib/apt/lists/*
COPY --from=python-builder /usr/local /usr/local
ENV PATH="/usr/local/bin:$PATH" \
LD_LIBRARY_PATH="/usr/local/lib" \
PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1
RUN pip${PYTHON_MAJOR_MINOR} config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple && \
pip${PYTHON_MAJOR_MINOR} config set global.timeout 100 && \
ln -sf /usr/local/bin/python${PYTHON_MAJOR_MINOR} /usr/local/bin/python && \
ln -sf /usr/local/bin/pip${PYTHON_MAJOR_MINOR} /usr/local/bin/pip
RUN python --version
RUN --mount=type=bind,source=openyuanrong_sdk-0.7.0.dev0-cp311-cp311-linux_x86_64.whl,target=/tmp/openyuanrong_sdk-0.7.0.dev0-cp311-cp311-linux_x86_64.whl \
if [ "${PYTHON_MAJOR_MINOR}" = "3.11" ]; then \
pip install --no-cache-dir /tmp/openyuanrong_sdk-0.7.0.dev0-cp311-cp311-linux_x86_64.whl; \
else \
echo "Unsupported Python version: ${PYTHON_MAJOR_MINOR}"; \
exit 1; \
fi
RUN python -c "import sys; print(f'Python version: {sys.version}')" && \
pip list | grep openyuanrong || true
RUN echo '#!/bin/bash' > /home/entryfile.sh && \
echo '' >> /home/entryfile.sh && \
echo 'cd ${YR_RT_WORKING_DIR}' >> /home/entryfile.sh && \
echo 'export LD_LIBRARY_PATH=./usr/lib/x86_64-linux-gnu/:./usr/local/lib:./usr/lib64:./lib' >> /home/entryfile.sh && \
echo 'export PYTHONPATH=./usr/local/lib/python3.11/site-packages/' >> /home/entryfile.sh && \
echo 'exec ./usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 \' >> /home/entryfile.sh && \
echo ' ./usr/local/bin/python3 \' >> /home/entryfile.sh && \
echo ' ./usr/local/lib/python3.11/site-packages/yr/main/yr_runtime_main.py \' >> /home/entryfile.sh && \
echo ' $@' >> /home/entryfile.sh && \
chmod +x /home/entryfile.sh