2.7. Python
2.7.1. 概要
OpenShift Online には 、Python アプリケーションのビルドおよび実行用に S2I が有効な Python イメージが含まれています。Python S2I ビルダーイメージは、必要な依存関係を使用してアプリケーションソースを組み立てて、Python アプリケーションを含む新規イメージを作成します。結果として生成されるイメージは、OpenShift Online または Docker のいずれかで実行できます。
2.7.2. バージョン
現時点で、OpenShift Online は Python のバージョン 2.7、3.3、3.4、および 3.5 を提供しています。
2.7.3. イメージ
RHEL 7 イメージは、Red Hat レジストリーから入手できます。
$ docker pull registry.access.redhat.com/rhscl/python-27-rhel7 $ docker pull registry.access.redhat.com/openshift3/python-33-rhel7 $ docker pull registry.access.redhat.com/rhscl/python-34-rhel7 $ docker pull registry.access.redhat.com/rhscl/python-35-rhel7
このイメージは、python
イメージストリームで使用することができます。
2.7.4. ビルドプロセス
S2I は、ソースコードをコンテナーに挿入し、コンテナーにソースコードの実行を準備をさせることで、実行準備が整ったイメージを生成します。S2I では、以下の手順を実行します。
- ビルダーイメージからコンテナーを起動します。
- アプリケーションソースをダウンロードします。
- ビルダーイメージコンテナーにスクリプトとアプリケーションソースをストリーミングします。
- (ビルダーイメージから) assemble スクリプトを実行します。
- 最終的なイメージを保存します。
ビルドプロセスの詳細のまとめについては、「S2I ビルドプロセス」を参照してください。
2.7.5. 設定
Python イメージは多数の環境変数を複数サポートし、環境変数を設定することで Python のラインタイムの設定や動作を制御できます。
イメージの一部としてこれらの環境変数を設定するには、ソースコードリポジトリーの中にある .s2i/environment ファイル に配置するか、ビルド設定の sourceStrategy
定義の環境セクションに定義します。
また、新規アプリケーションの作成時に既存のイメージを使用するか、デプロイメント設定などの既存のオブジェクトの環境変数を更新して環境変数を設定できます。
ビルドの動作を制御する環境変数は、s2i ビルド設定または .s2i/environment ファイルの一部として設定して、ビルドの手順で利用できるようにする必要があります。
変数名 | 説明 |
---|---|
| この変数は、アプリケーションを起動する Python インタープリターに渡すファイル名を指定します。デフォルトでは、この変数は app.py に設定されています。 |
|
この変数は WSGI 呼び出し可能なオブジェクトを指定します。この変数のパターンは |
| この変数は、gunicorn 設定 で有効な Python ファイルへのパスを指定します。 |
|
空でない値に設定して、ビルド時に |
|
空でない値に設定して、生成されたイメージの実行時に |
| ビルドプロセス時に必要なパッケージをダウンロードするための、カスタムのインデックス URL またはミラーを使用するように、この変数を設定します。これは、requirements.txt ファイルに記載のパッケージにのみ影響があります。 |
| これを設定して、ワーカー 数のデフォルト設定を変更します。デフォルトでは、これは利用可能なコアに 4 をかけた数字に設定されています。 |
2.7.6. ホットデプロイ
ホットデプロイでは、新しい S2I ビルドを生成する必要なしに、アプリケーションに変更をすばやく加え、デプロイすることができます。Django を使用する場合は、ホットデプロイメントはカスタマイズなしに使用できます。
Gunicorn を使用したホットデプロイメントを有効にするには、reload
オプション を true に設定して、リポジトリーに Gunicorn 設定ファイルが配置されているようにします。設定ファイルは、APP_CONFIG
環境変数を使用して指定します。たとえば、oc new-app
コマンドを参照してください。oc set env
コマンドを使用して、既存オブジェクトの環境変数を更新できます。
このオプションは、開発またはデバッグの時にだけ使用するようにしてください。 実稼働環境でこの設定をオンにすることは推奨しません。
実行中の Pod でソースコードを変更するには、oc rsh
コマンドを使用して、コンテナーに入ります。
$ oc rsh <pod_id>
実行中のコンテナーに入った後に、現在のディレクトリーを、ソースコードが配置されている /opt/app-root/src に設定します。
2.7.7. Python テンプレート
OpenShift Online には、サンプル Django アプリケーションをデプロイするためのサンプルテンプレートが含まれています。このテンプレートは、ストレージの永続ボリュームを使用して PostgreSQL データベースを含む Python 3.5 のサンプルアプリケーションをビルドし、デプロイします。
サンプルアプリケーションは、以下のコマンドで rhscl/python-35-rhel7
イメージを使用してビルドし、デプロイできます。
$ oc new-app --template=django-psql-persistent