1 つの答えは、devpi ヘルパー コンテナーです。docker devpi イメージを開始し、ポート 3141 を公開します。次に、docker ファイルの環境変数を使用して、これを pip install の追加ソースとして追加できます。
docker compose を使用して devpi を開始します。
devpi:
image: scrapinghub/devpi
container_name: devpi
expose:
- 3141
volumes:
- /path/to/devpi:/var/lib/devpi
myapp:
build: .
external_links:
- devpi:devpi
docker-compose up -d devpi
ここで、クライアント Docker コンテナーを構成する必要があります。pip を構成する必要があります。
Dockerfile: ENV PIP_EXTRA_INDEX_URL= http://devpi:3141/root/pypi/+simple/ \ PIP_TRUSTED_HOST=devpi
コンテナにログインして、動作していることを確認します。
docker-compose run myapp bash
pip install --verbose nose
出力には以下が含まれる必要があります
2 location(s) to search for versions of nose:
* https://pypi.python.org/simple/nose/
* http://devpi:3141/root/pypi/+simple/nose/
別のコンテナーまたは sftp からコンテナーにパッケージをアップロードできるようになりました。
このアプローチには、ビルドを高速化するという利点がありますが、devpi コンテナーが存在しない場合でもビルドが壊れることはありません。
注: セキュリティ上の問題があるため、強力なパスワードを使用せずにポートを devpi に公開しないでください。人々はそれを使用して、アプリケーションがインストールして実行する任意のコードをアップロードできます。