Dockerとコンテナーを初めて使用する場合は、DockerにPythonFlaskAPIアプリケーションをデプロイする方法を学ぶことから始めるのが最適です。 Dockerを使用すると、軽量のテクノロジーとセキュリティを使用してアプリケーションをコンテナ化して、アプリケーションを迅速にデプロイできます。
このチュートリアルでは、DockerコンテナにPythonFlaskAPIアプリケーションをセットアップしてデプロイする際の独自のマスターになる方法を学びます。
準備をして展開を開始してください!
前提条件
ステップバイステップで実行する場合は、次のものをインストールする必要があります。
- DockerがインストールされたUbuntuマシン。このチュートリアルでは、Dockerv19.03.8でUbuntu18.04.5LTSを使用します。
- UbuntuマシンにインストールされているPythonv3.9以降。このチュートリアルでは、UbuntuマシンでPythonv3.9.2を使用します。
- このチュートリアルでAPIをテストするために使用されたUbuntuマシンにインストールされたElinksパッケージ。
Python Flask APIアプリケーションの作成(GETおよびPOST API)
Python Flaskアプリケーションを作成して、このチュートリアルを開始します。 Flaskは、Pythonで記述された軽量のWSGIマイクロWebアプリケーションフレームワークです。 Flaskは、PythonでWebアプリケーションを作成するための便利なツールと機能を提供します。
Python Flaskアプリケーションを作成する前に、Flaskがアプリケーションを実行するPythonFlaskとPython仮想環境をインストールします。
1.お気に入りのSSHクライアントを使用してUbuntuマシンにログインします。
2.次に、次のコマンドを実行して、〜/ docker_python_flask_demoという名前のディレクトリを作成します。 それに切り替えます。このディレクトリには、PythonとDockerがアプリケーションを実行するために必要なすべてのファイルが保持されます。
mkdir ~/docker_python_flask_demo
cd ~/docker_python_flask_demo
3. pip
を実行します 以下のコマンドでinstall
Python仮想環境(virtualenv
)アプリケーションを実行するためにFlaskが必要とします。 Python仮想環境は、他のアプリケーションとの競合を回避するために、独自のPythonバイナリおよびアプリケーションごとにインストールされたパッケージを提供します。
pip install virtualenv
4. virtualenv
を実行します venv
を使用して仮想環境を作成およびアクティブ化するには、以下のコマンドを実行します モジュール。
virtualenv venv
5.次に、以下のコマンドを実行してPython flask
をインストールします pip
を含むパッケージ パッケージマネージャー。
pip install flask
6.次のコマンドを実行して、仮想環境でパッケージをアクティブ化してから、パッケージのインストールまたは使用を開始します。これにより、VIRTUAL_ENV
が変更されます 仮想環境を指す環境変数で、仮想環境のPythonバイナリをパスの前に追加して、正しいバイナリを実行できるようにします。
source venv/bin/activate
7. requirements.txtという名前のファイルをもう1つ作成します 、および以下に示すように、Flaskアプリケーションの依存関係を定義します。
Flask==2.0.2
8.テキストファイルを作成します〜/ docker_python_flask_demo / app.py ファイルに以下のPythonコードを入力します。
以下のPythonコードは、Python flask
をインポートします クラスを作成し、app
という名前のクラスインスタンスを作成します 。 app
クラスインスタンスには2つのlogin()
が含まれています ユーザーが/login
でリクエストを送信したときに実行される関数 ページ。
success()
次に、関数が実行され、ブラウザにウェルカム「ユーザー名」メッセージが表示されます。
from flask import Flask , redirect , url_for , request # Importing the class flask
# app is the object or instance of Flask
app = Flask(__name__)
# app.route informs Flask about the URL to be used by function
@app.route('/success/<name>')
# Creating a function named success
def success(name):
return 'welcome %s' % name
@app.route('/login', methods = ['GET','POST'])
# Creating a function named login
def login():
if request.method == 'POST':
user = request.form['adamlistek']
return redirect(url_for('success', name = user))
else:
return "INVALID"
# Programs executes from here in a development server (locally on your system)
# with debugging enabled.
if __name__ == '__main__':
app.run(debug = True)
9. 〜/ docker_python_flask_demo / form.htmlという名前のファイルをもう1つ作成します 以下のコードをコピーして貼り付けます。
以下のHTMLコードを実行すると、2つの入力を持つフォームが作成されます。 1つは名前を提供するテキストで、もう1つは送信ボタンです。
ユーザー名を入力して送信ボタンを押すとすぐに、投稿リクエストが送信され、Flaskは別の機能を実行して、http:// localhost:5000 / success/
<html>
<body>
<form action="http://localhost:5000/login" method="post">
<p>Please Enter your name</p>
<p><input type="text" name="adamlistek" /></p>
<p><input type="submit" value="Submit" /></p>
</form>
</body>
</html>
10.最後に、Python
を実行します 以下のコマンドを使用して、アプリケーションを確認します(app.py
)システム上でローカルに動作します。
Python app.py
以下に示すように、アプリケーションはUbuntuマシンでは正常に実行されていますが、Dockerでは実行されていません。次のセクションでは、Dockerで同じアプリケーションを起動します。
PythonFlaskAPIアプリケーションをデプロイするためのDockerfileの作成
Python Flaskアプリケーションを作成し、マシン上でローカルに動作することを確認しました。ただし、アプリケーションをDockerにデプロイする前に、まずDockerfileを作成して、Dockerイメージをビルドするためのすべての命令セットを定義します。
〜/ docker_python_flask_demoにDockerfileという名前のファイルを作成します ディレクトリを作成し、以下のコンテンツをコピーしてDockerfileに貼り付けます。
Dockerは、このDockerfileを使用して、ベースイメージ(ubuntu:18.04
)の上に新しいDockerイメージを構築するために必要なすべての命令またはコマンドを実行します。 。
# Sets the base image for subsequent instructions
FROM ubuntu:18.04
# Sets the working directory in the container
WORKDIR /app
RUN apt-get update -y
RUN apt-get install -y python-pip python-dev
# Copies the files to the working directory
COPY form.html /app/form.html
# Copies the dependency files to the working directory
COPY requirements.txt /app/requirements.txt
# Install dependencies
RUN pip install -r requirements.txt
# Copies everything to the working directory
COPY . /app
# Command to run on container start
CMD [ "python" , "./app.py" ]
次に、tree
を実行します 以下のコマンドを使用して、Python Flaskアプリケーションを実行するために必要なすべてのファイルが作業ディレクトリ(〜/ docker_python_flask_demo )に含まれていることを確認します。 。
tree
PythonFlaskAPIアプリケーション用のDockerイメージの構築
これで、Python Flaskアプリケーションをデプロイするために必要なファイルができましたが、イメージをビルドしない限り、これらのファイルは何もしません。 docker build
を実行します Dockerfileで設定した手順に基づいてDockerイメージをビルドするコマンド。
docker build
を実行します 以下のコマンドを使用して、作業ディレクトリ(.
)にDockerイメージをビルドします。 )。このコマンドはタグを付けます(-t
)flask-image
としての画像 バージョン1(:v1
。
sudo docker build -t flask-image:v1 .
次に、docker
を実行します 以下のコマンドを使用して、使用可能なすべての画像を一覧表示します。
sudo docker images
以下に、 REPOSITORY など、返されるさまざまな属性を示します。 。 リポジトリに注意してください 名前はフラスコ画像です バージョン( v1 )でタグ付けされています )、以下に示すように。
DockerコンテナでのPythonFlaskアプリケーションの実行
Dockerイメージを作成した後、DockerコンテナーでPythonフラッシュアプリケーションを実行できるようになりました。 Dockerコンテナーは、コードとその依存関係をパッケージ化して、アプリケーションをすばやく実行します。
1. docker run
を実行します 以下のコマンドを実行して、以下を実行します。
- コンテナをデタッチモードで起動します (
-d
)、バックグラウンドプロセスとして実行され、作成時にコンソール出力を返します。 - Dockerホストポートをマップします(
-p 5000:5000
)コンテナのポートを使用します。 - Dockerコンテナを起動します(
flask-image:v1
)
sudo docker run -d -p 5000:5000 flask-image:v1
2.次に、docker
を実行します 以下のコマンドを使用して、Dockerエンジン内のすべてのコンテナーを一覧表示します。 Dockerがコンテナを正常に作成したかどうかを確認します。
sudo docker ps -a
3.最後に、以下のコマンドを実行して、elinksを使用してUbuntuマシンでWebブラウザーを開きます。
elinks form.html
このコマンドは、以下に示すように、ターミナルでWebブラウザーを開き、名前の入力を求めます。
名前を入力して[送信]ボタンをクリックします。
4.以下に示すように、送信を押した後 ボタンをクリックすると、ログイン機能がFlaskアプリケーションの成功機能にリダイレクトされます。
結論
このチュートリアルは、Dockerイメージを使用してPython FlaskAPIDockerコンテナーをセットアップするプロセスを支援することを目的としています。また、Dockerfilesを使用してPython Flaskコンテナーを起動する方法についても触れました。これにより、選択したカスタマイズされたコンテナーを編集および構築できます。
では、Dockerコンテナにデプロイするために他にどのようなアプリケーションを考えていますか?おそらくDockerMongoDBコンテナですか?