Docker を使用して pypi プライベート リポジトリを構築する方法

Docker を使用して pypi プライベート リポジトリを構築する方法

1. 建設

1. htpasswd.txtファイルを準備する

ファイルには、パッケージを倉庫にアップロードするときに確認するためのユーザー名とパスワードが含まれています。

pip インストール htpasswd
htpasswd -sc htpasswd.txt <ユーザー名>

2. コンテナを起動する

docker run --name pypiserver --restart=always -v /data/pypi/packages:/data/packages -v /root/htpasswd.txt:/data/htpasswd.txt -p 8080:8080 -d pypiserver/pypiserver -P htpasswd.txt パッケージ
#事前にホスト上にデータディレクトリとhtpasswd.txtファイルを作成する必要があります

3. nginxリバースプロキシを設定する

/usr/local/nginx/conf/exten/pypi.conf を編集します。
アップストリーム pypi {
          サーバー 127.0.0.1:8080;
      }
 
サーバー{
 
    聞く 80;
    サーバー名 pypi.local.me;
    位置 / {
          proxy_pass_header サーバー;
          proxy_set_header ホスト $http_host;
          proxy_redirect オフ;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header Xスキーム $scheme;
          proxy_pass http://pypi;
          }
}

2. 使用

1. テストプロジェクトを作成する

# プロジェクトディレクトリを作成する mkdir -p linode_example/linode_example
# setup.py を作成する
linode_example/setup.py を cat します。
setuptoolsからsetupをインポート
設定(
   名前='linode_example',
   packages=['linode_example'], # ウェアハウスにアップロードした後のディレクトリ、例: http://pypi.local.me/linode_example
   説明 = 'Hello world エンタープライズエディション',
   version='0.1', # バージョン番号 url='http://github.com/example/linode_example',
   著者='Linode',
   キーワード=['pip','linode','例']
   )
# このファイルの内容は説明目的のみです。自分のパッケージに合わせて設定してください。 # __init__.py メインプログラムを作成します cat linode_example/linode_example/__init__.py
hello_word()を定義します:
   印刷("こんにちは世界")
 
#パッケージ化してアップロード python3.7 setup.py sdist #パッケージ化。実行後、dist ディレクトリに tarball が作成されます twine upload --repository-url http://pypi.local.me dist/* #アップロード時にはユーザー名とパスワードが必要です: admin/admin123

2. 倉庫にアップロードされたパッケージを使用する

pip インストール -i http://pypi.local.me --trusted-host pypi.local.me linode_example

梱包に関する注意事項:

1. Git リポジトリにパッケージ化する必要があるすべてのプロジェクトのディレクトリ構造は、Jenkinsfile の自動統合を容易にするために一貫している必要があります。

2. パッケージ化する必要があるすべてのプロジェクトの setup.py ファイルは、プロジェクトのルート ディレクトリに配置する必要があります。

3. Python は統合バージョンを使用するため、反復を容易にするために各プロジェクトのバージョンを固定する必要があります。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Dockerレジストリプライベートウェアハウスの構築プロセス
  • docker compose を使用してハーバープライベートウェアハウスをインストールする詳細なチュートリアル
  • Docker-compose は Docker プライベート ウェアハウスのステップを迅速に構築します
  • Dockerがプライベート倉庫Harborを構築する手順
  • Dockerがプライベート倉庫を設立するプロセス

<<:  Element-UIの10の驚くべきトリックのまとめ

>>:  Q&A: XML と HTML の違い

推薦する

Typescriptを使用してWeChatミニプログラムでプロジェクトを作成する方法

プロジェクトを作成するWeChat開発者ツールでプロジェクトを作成し、言語でTypeScriptを選...

CentOS7 構成 Alibaba Cloud yum ソースメソッドコード

Centos yumフォルダを開くコマンドcd /etc/yum.repos.d/を入力します。 w...

Vue フィルター、ライフサイクル関数、vue-resource の簡単な紹介

1. フィルター例: <!DOCTYPE html> <html lang=&qu...

nginx 用の zabbix 5.0 をインストールして展開する方法

目次実験環境インストールと展開データベースをインストールして設定します (ここでは mariadb ...

MySQLのパスワードを忘れた場合の対処方法

MySQL パスワードを 2 回忘れてしまいましたか?最初、私はアンインストールして再インストールす...

MySQL最新バージョン8.0.17解凍版インストールチュートリアル

個人的にはインストール版よりも解凍版の方がインストールしやすいと思います。早速、解凍版のインストール...

Vue3.0+vite2は動的非同期コンポーネントの遅延読み込みを実装します

目次Viteプロジェクトを作成するコンポーネントの作成Viteプロジェクトを作成するパフォーマンスが...

MySQL の準同期レプリケーションについての簡単な説明

導入MySQL はレプリケーションを通じてストレージ システムの高可用性を実現します。現在、MySQ...

JavaScript 組み込みオブジェクトの概要

目次1. 組み込みオブジェクト2. 数学オブジェクト1. Mathオブジェクトの使用2. 指定された...

CentOS6.8 中国語/英語環境切り替えチュートリアル図

1. はじめに英語に慣れていない人は、システムを英語から中国語に変更したいかもしれません。一方、クラ...

CSS の ::before と ::after 疑似要素について知らないこと

CSS には、一般的には使用されない 2 つの疑似クラス、before と :after があります...

Vue の動的メニュー、動的ルートの読み込みと更新の落とし穴

目次必要:アイデア:レッスン:テキストを共有する:要約する必要:インターフェイスからサブメニュー デ...

MySQLトリガーの使用と注意すべき点

目次トリガーについてトリガーの使用トリガーを作成するトリガーを表示トリガーの削除使用上の注意新旧の違...

Dockerボリューム権限管理の詳細な説明

ボリュームデータボリュームは Docker の重要な概念です。データ ボリュームは、1 つ以上のコン...

ネガティブマージン関数の紹介と使用方法の概要

1998 年の CSS2 勧告の時点で、テーブルは徐々に舞台から消え、歴史の中に記録されるようになり...