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 の違い

推薦する

MySQL マスター スレーブ データが矛盾しています。プロンプト: Slave_SQL_Running: 解決策はありません

この記事では、MySQL マスターとスレーブ データ間の不一致の解決方法と、プロンプト「Slave_...

Nginx の構成と HTTP 実装コード分析との互換性

OpenSSL を使用して SSL キーと CSR ファイルを生成するHTTPS を設定するには、秘...

Docker と Intellij IDEA の融合により、Java 開発の生産性が 10 倍向上

目次1. 開発前の準備2. 新しいプロジェクトIdea は Java 開発のための強力なツールであり...

VueにおけるAxios非同期通信の詳細な説明

1. まず、インタラクティブに使用するための .json ファイルを作成します。json データ形式...

js データ型とその判定方法の例

js データ型基本データ型: 数値、文字列、ブール値、未定義、null、シンボル、参照データ型: オ...

Linux parted ディスク パーティション実装手順の分析

fdisk と比較すると、parted はあまり使用されず、主に 2T を超えるパーティションに使用...

IDEA に基づいて Tomcat サーバーを展開するための詳細な手順

目次導入ステップ1ステップ2: アイデアで動的Webプロジェクトを作成するステップ3: Tomcat...

ファイル共有サーバーを構築するための samba + OPENldap の詳細な説明

ここでは、samba (ファイル共有サービス) v4.9.1 + OPENldap (バックエンド ...

MySQL サービスを起動できない問題の解決策を含む MySQL 5.7.17 インストール チュートリアル

.net 開発に関しては、Microsoft の SQL Server データベースに精通しており、...

MySQL で複数のフィールドを連結する詳細な例

MySQL クエリ結果の行フィールドの結合は、次の 2 つの関数を使用して実装できます。 1. co...

MySQL 圧縮版 zip のインストールに関する問題の解決策

本日、MySQLの圧縮版をインストールする際に問題が発生しました。サービスが起動できず、2、3時間苦...

background-positionプロパティでのパーセンテージ値の使用法の検討

背景位置が背景画像の表示に与える影響この2日間のプロジェクトでホームページの写真を入れ替えていたとこ...

Docker 大規模プロジェクトのコンテナ化変革

仮想化とコンテナ化は、クラウドベースのプロジェクトでは避けられない 2 つの問題です。仮想化は純粋な...

Vueブラウザが監視を再開するための具体的な手順

序文ページを共有するときに、ブラウザの戻るボタンをクリックしてプロジェクトのホームページに戻り、訪問...

Docker を使用した RabbitMQ 環境のデプロイの詳細な紹介

前提条件: Dockerはすでにインストールされています1. 画像を見つける(方法は2つあります) ...