Docker build時に「This script does not work on Python 3.8」エラーが出る原因と対処法
エラー内容
DockerfileでPython 3.8環境を構築する際、get-pip.pyの実行時に以下のエラーが発生しました。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
=> ERROR [14/21] RUN python get-pip.py --user 0.4s ------ > [14/21] RUN python get-pip.py --user: 0.384 ERROR: This script does not work on Python 3.8. The minimum supported Python version is 3.9. Please use https://bootstrap.pypa.io/pip/3.8/get-pip.py instead. ------ Dockerfile -------------------- 15 | RUN curl -O https://bootstrap.pypa.io/get-pip.py 16 | RUN ln /usr/src/Python-3.8.13/libpython3.8.so.1.0 /usr/lib64/libpython3.8.so.1.0 17 | >>> RUN python get-pip.py --user 18 | RUN mv /bin/pip /bin/pip_bk 19 | RUN ln -s /root/.local/bin/pip /bin/pip -------------------- failed to solve: process "/bin/sh -c python get-pip.py --user" did not complete successfully: exit code: 1 |
|
1 2 3 4 5 6 7 |
=> ERROR [14/21] RUN python get-pip.py --user ------ > [14/21] RUN python get-pip.py --user: 0.384 ERROR: This script does not work on Python 3.8. The minimum supported Python version is 3.9. Please use https://bootstrap.pypa.io/pip/3.8/get-pip.py instead. ------ |
該当のDockerfileでは、以下のようにpipのインストールスクリプトを取得していました。
|
1 2 |
RUN curl -O https://bootstrap.pypa.io/get-pip.py RUN python get-pip.py --user |
原因
https://bootstrap.pypa.io/get-pip.py は常に最新版のget-pip.pyが配信されるURLです。
Python 3.8は2024年10月にサポート終了(EOL)を迎えており、それに伴い最新のget-pip.pyがサポートする最低バージョンがPython 3.9に引き上げられました。
そのため、以前は問題なくビルドできていたDockerfileでも、同じURLから取得したget-pip.pyがPython 3.8で動作しなくなったというわけです。
解決策
Python 3.8専用のget-pip.pyが別URLで提供されています。ダウンロードURLを以下のように変更するだけで解決できます。
|
1 2 3 4 5 |
# 変更前 RUN curl -O https://bootstrap.pypa.io/get-pip.py # 変更後 RUN curl -O https://bootstrap.pypa.io/pip/3.8/get-pip.py |
なお、Python 3.8以外のEOLバージョンについても同様に、バージョン別のURLが用意されています。
| Pythonバージョン | get-pip.py URL |
|---|---|
| 3.8 | https://bootstrap.pypa.io/pip/3.8/get-pip.py |
| 3.7 | https://bootstrap.pypa.io/pip/3.7/get-pip.py |
| 2.7 | https://bootstrap.pypa.io/pip/2.7/get-pip.py |
補足
Python 3.8はEOLを迎えているため、セキュリティアップデートも提供されません。可能であればPython 3.9以降へのアップグレードを検討することをおすすめします。
今回のように、外部URLから最新版のスクリプトを取得するDockerfileは、依存先の更新によって突然ビルドが失敗することがあります。Dockerfileを長期間メンテナンスする場合は、バージョンを明示的に固定することを意識しておくとよいでしょう。







ディスカッション
コメント一覧
まだ、コメントがありません