我需要创建一个docker图像,其中包含两个版本的Python,比如说3.9&;3.10.
我们的 idea 是安装这两个版本的Python,然后安装来自Python3.9的pip/heel/lib目录,因为它是我们想要使用的默认版本.然后,我创建了指向pip/heel/lib目录的sys链接.
然后,使用.sh脚本,我们将通过构建参数传递Python版本,并使用该ARG,我们将 Select 替代版本的Python,本例中为10,这将使3.10版本成为构建使用的版本.
但我不确定做这件事的最好方法是dockerfile.
我的文档文件如下所示:
COPY --from=python1 --chown=developer:developer /usr/local/bin/py* /usr/local/bin/
COPY --from=python1 --chown=developer:developer /usr/local/bin/pip* /usr/local/bin/
COPY --from=python1 --chown=developer:developer /usr/local/bin/wheel /usr/local/bin/
COPY --from=python1 --chown=developer:developer /usr/local/lib/lib* /usr/local/lib/
RUN for link in /usr/local/bin/py* /usr/local/bin/pip* /usr/local/bin/wheel /usr/local/lib/lib*; do \
[ -e "$link" ] || ln -s "$link" /usr/local/bin/; \
done
# Copy Base Python Version
COPY --from=python1 --chown=developer:developer /usr/local/lib/python3.9/ /usr/local/lib/python3.9/
# Copy Alternative Python Version
COPY --from=python2 --chown=developer:developer /usr/local/lib/python3.10/ /usr/local/lib/python3.10/
# Copy the version-switching script
COPY sagacity-cd/swap.sh /usr/local/bin/
# Run the script to set the default version based on the build argument
USER root
RUN chmod +x /usr/local/bin/swap.sh && \
/usr/local/bin/swap.sh ${DEFAULT_PYTHON_VERSION}
USER developer
# Copy the version-switching script
COPY sagacity-cd/swap.sh /usr/local/bin/
# Run the script to set the default version based on the build argument
USER root
RUN chmod +x /usr/local/bin/swap.sh && \
/usr/local/bin/swap.sh ${DEFAULT_PYTHON_VERSION}
USER developer
我的swap.sh如下所示:
#!/bin/bash
if [ "$1" == "3.9" ]; then
rm /usr/local/bin/python
ln -s /usr/local/bin/python3.9 /usr/local/bin/python
elif [ "$1" == "3.10" ]; then
rm /usr/local/bin/python
ln -s /usr/local/bin/python3.10 /usr/local/bin/python
else
echo "Invalid version specified. Usage: $0 [3.9|3.10]"
exit 1
fi