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

推薦する

HTMLでマスクレイヤーを実装する方法 HTMLでマスクレイヤーを使用する方法

Web ページでマスク レイヤーを使用すると、繰り返しの操作を防ぎ、読み込みを促進できます。また、ポ...

テキストエリアのテキスト入力領域に改行を実装する方法

textarea 入力領域でテキストを折り返す場合は、<br/> と入力すると <...

LeetCode の SQL 実装 (175. 2 つのテーブルの結合)

[LeetCode] 175.2つのテーブルを結合する表: 人物+-------------+--...

ページネーションの例とベストプラクティス

<br />構造と階層により複雑さが軽減され、読みやすさが向上します。記事やサイトが整理...

LinuxカーネルマクロContainer_Ofの詳細な説明

目次1. 構造体はメモリにどのように保存されますか? 2. container_ofマクロ3. 型4...

Vue-Element-Adminはログインジャンプを実現するために独自のインターフェースを統合しています

1. まずリクエスト設定ファイルを見て、axios.createメソッドを見てください。baseUR...

なぜCSSをヘッドタグに配置する必要があるのか

考えてみてください。なぜcss 、 javascriptのようにbodyタグの末尾ではなく、 hea...

重要なmysqlログファイルの概要

著者: 丁易出典: https://chengxuzhixin.com/blog/post/mysq...

16 の XHTML1.0 と HTML の互換性ガイドラインの概要

1.ページを XML タイプとして宣言しないでください。ページでは UTF-8 または UTF-16...

Vueはログインタイプの切り替えを実装します

この記事では、ログインタイプの切り替えを実装するためのVueの具体的なコードを例として紹介します。具...

HTML、CSS、RSSフィードが正しいかどうかを確認する無料ツール

この種のエラーに対処するための 1 つの方法は、まずマークアップとスタイルシートを検証することです。...

MySQL Innodbの主な機能挿入バッファ

目次挿入バッファとは何ですか?挿入バッファのトリガー条件は何ですか?なぜ一意のインデックスにできない...

Mysql マスタースレーブ同期構成の実践の詳細な説明

1. はじめに以前、「MySQL マスター スレーブ同期の原理」という記事を書きました。この記事を読...

回転するフリップカードアニメーションの効果を実現するCSS

回転フリップ効果の CSS アニメーション、具体的な内容は次のとおりです。 1. まず2つのボックス...

Ubuntu 18.04 に opencv 3.2.0 をインストールするためのソリューション

opencv.zip をダウンロード依存関係を事前にインストールします。まずダウンロードソースを更新...