はじめに
デプロイやCI + tox などにおいて、依存ライブラリインストールを安定・高速化するためのwheelhouse
作成手順をまとめておきます。
※ プラットフォームはmanylinux1
※ PyCon JPのweb構築から学んだ作成手順
## 勉強になったもの
- manylinux1 wheel を作ってみる - methaneのブログ
- Pythonプロフェッショナルプログラミング 第2版
- https://github.com/pyconjp/pyconjp-website
Dockerfile
# PyPAが提供するmanylinux1 wheelビルド用Docker
FROM quay.io/pypa/manylinux1_x86_64
COPY ./requirements /app/requirements
COPY ./scripts/make-wheels.sh /app/make-wheels.sh
VOLUME /app/wheelhouse /app/wheelhouse_new
WORKDIR /app/wheelhouse_new
CMD ["bash", "/app/make-wheels.sh"]
Shell Script
make-wheels.sh
set -ex
WHEELHOUSE_OLD=/app/wheelhouse
WHEELHOUSE_NEW=/app/wheelhouse_new
# Python-2.7.11(cp27mu)向けに依存パッケージをwheel化
/opt/python/cp27-cp27mu/bin/pip wheel -r /app/requirements/online.txt -f ${WHEELHOUSE_OLD} -w ${WHEELHOUSE_NEW}
# wheelのmanylinux化
cd ${WHEELHOUSE_NEW}
for f in ./*linux_*; do
if [ -f $f ]; then
auditwheel repair $f -w .
rm $f
fi
done
Commands
$docker build -f Dockerfile -t massa142/wheelhouse .
$docker run -it --rm -v `pwd`/wheelhouse:/app/$wheelhouse:ro -v `pwd`/wheelhouse_new:/app/wheelhouse_new massa142/wheelhouse
$rm -R wheelhouse
$mv wheelhouse_new wheelhouse