Pythonアプリケーションを「ドッカー化」する方法

何百万人もの開発者が Python を使用して、最新のスケーラブルなアプリケーションを構築しています。 パフォーマンス、クロスプラットフォームの移植性、利便性を重視する開発者にとって、これらのアプリを Docker 環境にデプロイすることは有利な場合があります。 しかし どのような種類のアプリケーションを作成できますか? Dockerはそれらの機能をどのようにサポートしていますか? 

パトリック・ローバーは、プレゼンテーション中にこれらの質問などに答えます。Docker と Python の使用を開始する"

Dockerコンテナ内にPythonアプリをデプロイするための青写真をお探しの場合は、もう探す必要はありません。 Patrick は、アプリケーションの開発中に活用できる多くのメカニズム、ライブラリ、およびコマンドを使用します。 また、Docker の基本についても説明しているため、専門知識がなくても Docker を簡単に導入できます。 飛び込みましょう。 

始める

Python と Docker を使用して開発するには、まず次のことを確認します。 パイソン v3.7.13+ がマシンにインストールされます。 ダウンロード可能なパッケージは、次の場所から入手できます。 Python.org すべてのメインストリームOSの場合: 

 

開始する前に、次の 3 つの追加ツールも必要になります。 

  1. の最新バージョン Docker Desktop、どちらかの場合 ウィンドウズ またはmacOS(インテル 又は Mシリーズ プロセッサ)。 これらのOSリンクは直接ダウンロードリンクであり、クリックするとプロセスが自動的に開始されます
  2. お好みのコードエディタですが、次のことをお勧めします Visual Studio Code (VS Code)
  3. ドッカー拡張機能 VS コードの場合


メモ:
Docker Desktop for Linux (DD4L) Beta もご利用いただけます。 ベータ プログラムは、Docker Desktop for Linux を試してフィードバックを提供したい早期導入者を対象としています。


Docker デスクトップには、この演習と Docker コンテナーに関連付けられたタスクに必要な CLI が含まれています。 コンテナ内でターミナルウィンドウを起動するのも簡単です。 

一方、VS Code の Docker 拡張機能は、オートコンプリート、デバッグ サポート、構文ヒントを提供します。 また、コンテナー、イメージ、レジストリを Docker エクスプローラーのサイドバー UI から管理することもできます。 最後に、拡張機能はそれぞれの編集プロセスを合理化します ドッカーファイル そして docker-compose.yml ファイル。 

セットアップの手順と依存関係

Python アプリケーションの構築中、作業ディレクトリ (ワークディール)が重要な役割を果たします。 実行時に重要な構成ファイルやその他のリソースにアプリケーションを指定することが重要です。 これにより、Python アプリを効果的かつ予測どおりに実行できます。 カスタム ディレクトリを使用すると、アプリケーションを明確に定義された状態で実行できるため、テストやデプロイに最適です。 

これが実際にどのように見えるかです: 

  1. エディター内に新しい名前付きプロジェクトを作成します。
  2. サイドバーに新しいルートプロジェクトフォルダを作成し、名前を付けて、新しいディレクトリを形成します。
  3. という名前の新しいワークスペースを開きます main.py.
  4. を入力します cd [root folder name]ターミナルでコマンドを使用して、新しいディレクトリをタップします。
  5. 既存のPythonアプリケーションコードをコピーして、 main.py ワークスペース。 それ以外の場合は、アプリケーション コードを手動で入力します。 

 

ドッカーのチュートリアル画像

サイドバーを使用してVS Codeでプロジェクトツリーを表示し、ファイルパスがターミナルに表示されます。

 

これで、アプリケーションの基礎が効果的に築かれました。 ただし、スピンアップする前にさらに手順が必要です。 

ドッカーコンポーネント

Python アプリが正しく動作するには、いくつかの基本的な Docker コンポーネントも必要です。 ドッカーファイルが必要になります、画像、およびコンテナー。 VS Code は、 ドッカーファイルを自動的に検出します Dockerに属し、それに応じてラベルを付けます。 今こそ、それをつなぎ合わせる時です。 

まず、次のコマンドを使用して、タグ付きのPythonベースイメージをプルダウンする必要があります。 

パイソンから:3.9
# または任意の優先 Python バージョン

Docker Hub プロジェクトで使用するための多数のPython公式画像が含まれています。 これらのリソースには、多数のタグが含まれています。 サイズに制約がある場合はどうなりますか? スリムなイメージビルドを選択することは、ごくわずかであるため、賢明です。 同じように python:<version>-alpine 同様の結果を達成します。 このイメージは、攻撃対象領域が最小限であるため、機密性の高いワークロードに対応する可能性があります。 

ドッカーハブのスクリーンショット

Python プロジェクトでは、ソース ファイルをコンテナーのベース フォルダーに追加する必要があります。 以下のそれぞれのコマンドは、前の例に基づいています。 

ADD main.py .

ただし、アプリケーションに重要な機能を追加するには、外部ライブラリが必要になる可能性があります。 それでは、それに飛び込みましょう。 

便利なサードパーティライブラリ

パトリックの例では、2つの人気のあるライブラリを活用しました。要求 そして 美しいスープ—IMDBのデータベースでアプリのクロール機能を作成します。 ただし、これら2つのライブラリには広くアピールがあります。 

要求

人間のための HTTP

スクリーンショットは python-requests.org の厚意により提供されました。

データ転送は、最新のアプリケーションに不可欠です。 ザ 要求ライブラリ HTTP 要求を送信するための汎用ソリューションとして進化したため、その名前が付けられました。 Docker は、 import requests 命令。 複数の画像もあります Docker Hub そのようなユースケースに対応できます。 

 実際、私たち自身の開発者の支持者の1人 最近作成されたアプリケーション それは定期的に私たちの世界からCOVIDワクチン接種率を引き出します パブリックリポジトリ.IoT が進化するデータの追跡にどのように役立つかに興味がある場合は、Shy Ruparel のチュートリアルをご覧ください。 

美しいスープ

美しいスープ

美しい スープのスクリーンショットの礼儀。

一方、 import BeautifulSoup コマンドを使用すると、重要なデータのWebページをスクレイピングできます。 IMDBでこれを行うことができますが、 パブリックにアクセス可能なHTMLおよびXMLリソースに埋め込まれたデータを取得します.したがって、Dockerコンテナ内に基本的なパーサーアプリケーションを簡単に作成できます。 このプロジェクトや他の同様のプロジェクトには、軽量のAlpine Linuxコンテナを使用することをお勧めします。 

Python-Dotenv

最終的に 構成には環境変数を使用する必要があります コンテナー化されたアプリの実行中。 これらのキーと値のペアはセキュリティに関連付けられていますが、アプリの機能にも影響します。 彼らはアプリ自体の外に住んでいるので、あなたは明示的にあなたを参照しなければなりません .env ファイルを使用して変数を取得します。 

これはどこです Python-dotenv Library 輝く。 入力することで pip install python-dotenv、このライブラリをすばやく起動して実行できます。 と from dotenv import load_dotenv そして from dotenv import dotenv_values コマンドを使用すると、環境に触れることなく、ファイルから設定をロードできます。 これらのコマンド(およびライブラリ内の他の多くのコマンド)は、アクティブなアプリケーションの更新に役立ちます。 

 可能な操作 Docker 作成を使用して環境変数を処理する—これはDockerデスクトップにバンドルされています。 に入る docker compose upコマンドは自動的にコンテナにいずれかを取得するように促します .env 値とそれらを置き換えます。 これにより、アクティブな構成変更が可能になります。

ライブラリのインストールと Dockerfile の理解

サードパーティのライブラリを正しく機能させるには、インストールする必要があります。 これを行うには、以前のライブラリを使用して次のコマンドを入力します。 

実行ピップインストールリクエスト美しいスープ4python-dotenv

最後に、コンテナーの起動後に Docker が実行するコマンドを入力します。 

CMD ["python", "./main.py"]# または、一意のディレクトリとパラメータセットの名前を入力します。

これらのコマンドと以前の引数を組み合わせることで、 ドッカーファイル.このファイルは以下にあります。

パイソンから:3.9# または任意の Python バージョン。main.py を追加します。実行ピップインストールリクエスト美しいスープ4python-dotenv
CMD ["python", "./main.py"]# または、一意のディレクトリとパラメータセットの名前を入力します。

これ Dockerfileかなり基本的なもので、このアプリケーションに最適です。 あなたの Dockerfile 変更されます コードと必要なアプリの機能によって異なります。 次のような他の引数もあります WORKDIR, ENV, COPY, EXPOSE, ENTRYPOINT そして HEALTHCHECK.それぞれを使用すると、Pythonアプリケーションに運用の複雑さを組み込んだり、取り込むリソースを制御したりできます。 

まとめ

最後に、配置後にすべてが稼働していることを確認します。 マシンに Docker がインストールされていることをすぐに確認し、バージョン番号をメモして最新のことを確認します。 

イメージもありますが、VS Code 内でビルドする必要があります。 次のコマンドを使用します。

docker build -t python-imagename . 

 ビルド プロセスには、数秒から数分かかる場合があります。 画像が利用可能になり、使用可能になったら、次のように入力します docker run python-imagenameこれにより、アプリケーションの実行が正常に促されます。 これは、端末の後続の読み出しに基づいて確認できます。 

パイソン3。9

大事なことを言い忘れましたが、これでPythonアプリケーションを実行する準備が整いました。 ターミナルで、次のように入力します Docker run python-imagename.出力はアプリの機能によって異なりますが、PatrickのIMDBユースケースは次のようになります。 

画像書き出しコマンド[がぞうのかきかこまん

必要に応じて、ループや条件付きユーザー入力を試すこともできます。 最初のイメージを構築した後に行ったファイルの変更に注意してください 再構築が必要になります 実装前。 

万丈!基本的な Python アプリケーションを Docker 化するプロセスを学習しました。 Dockerコンテナを軽く管理する必要がある場合は、Dockerデスクトップにアクセスして これらのタスクを簡単に実行 数回クリックするだけで。 

その他の強力なユースケース

パトリックはデモで2つの例に取り組みました。 まず、IMDBの映画データベースにアクセスするPythonスクリプトを「ドッカー化」する方法を示しました。 次に、Python Web アプリケーションを構築してコンテナー化する方法を示しました。 

したがって、IMDBのデータベースをポーリングすることは、PythonとDockerで可能な多くの素晴らしいことの1つにすぎません。 両方のテクノロジを使用して構築できるその他のアプリを次に示します。 


これは氷山の一角にすぎません。 独自の Python イメージを構築する方法の詳細については、
ドキュメントをご覧ください.ザ Docker SDK for Python 実行する別の便利な方法です 港湾労働者 Python アプリ自体内のコマンド。 

あなたはさらに探求したいと思っている映画ファンですか? Flask、MongoDB、およびその他のツールを使用して独自のゲーム・オブ・スローンズAPIをすばやくデプロイする方法に関するLorenzo Costaのチュートリアルを確認してください

ドッカーコン2022にご参加ください!

Docker、Dockerfiles、Python についてもっと知りたいですか? 今すぐ登録 5月9日から10日まで開催されるDockerCon 2022にご参加ください。 学習内容 ドッカー開発環境を構築する方法, 機械学習モデルをデプロイする、および方法 データ サイエンスに Python と Docker を使用する.

フィードバック

「Pythonアプリケーションを「ドッカー化」する方法」に関する0の考え