Flask アプリケーションの Docker デプロイ実装手順

Flask アプリケーションの Docker デプロイ実装手順

1. 目的

Flask アプリケーションをローカルで作成し、Docker でパッケージ化し、独自のサーバーにアップロードして、デプロイを完了します。

フローチャート:

2. 実験環境

ローカル: Windows 10 1909

サーバー: Alibaba Cloud Centos システム

3. 必要なソフトウェア

1.Dockerデスクトップ

2. ピチャーム 2020.3.3

4. 手順

1. Flaskアプリケーションをローカルで完了する

(1) PyCharmで新しいFlaskアプリケーションdocker_flaskを作成する

(2)gunicornとgeventパッケージをインストールする

(3)新しいgunicorn.config.pyファイルを作成し、次の内容を入力します。

workers = 5 # リクエストを処理するために同時に開かれるプロセスの数を定義し、ウェブサイトのトラフィックに応じて適切に調整します。worker_class = "gevent" # gevent ライブラリを使用して、リクエストの非同期処理をサポートし、スループットを向上させます。bind = "0.0.0.0:8080" # ここで 8080 は自由に調整できます。

(4)新しいrequirements.txtファイルを作成し、以下の内容を記入する

フラスコ
ガンコーン
ゲヴェント

(5)Dockerfileファイルを作成し、以下の内容を記入する

Python:3.7 から
ワークディレクトリ /usr/src/app
 
requirements.txt をコピーします。/
pip install -r requirements.txt -iを実行します。 
 
コピー 。 。
 
CMD ["gunicorn", "app:app", "-c", "./gunicorn.conf.py"] #最初のアプリはPythonによって起動されたファイル名(app.py)です。2番目はFlaskプロジェクトで事前に起動されたアプリケーション名です。

(6)プロジェクト構造

2. Dockerイメージを構築する

1. このプロジェクトのディレクトリに入る

2. イメージをビルドし、次のコマンドを入力します。

ビルドは -t 'docker_flask' です。

その後、6 つのステップが実行されます。心配する必要はなく、結果を見るだけです。

それをチェックしてください

これで、自作イメージの準備ができました。ローカルで実行して実験することができます。

3. 画像をAlibaba Cloud Warehouseにアップロードする

(1)Alibaba Cloud上に独自のDockerリポジトリを作成します。

(2)画像をアップロードする

1. Alibaba Cloud Docker Registry にログインし、ユーザー名を自分のユーザー名に変更することを忘れないでください。

docker login --username=Alibaba Cloud ユーザー名 registry.cn-hangzhou.aliyuncs.com

ログインパスワードはAlibaba Cloudのログインパスワードです

2. 次の2行のコマンドを入力して、イメージをレジストリにプッシュします。

docker タグ [イメージ ID] registry.cn-hangzhou.aliyuncs.com/namespace/warehouse name:[イメージ バージョン番号]
docker push registry.cn-hangzhou.aliyuncs.com/namespace/warehouse name:[イメージバージョン番号]

それなら心配せずに、実行を完了させましょう。

以前ここにアップロードしました。

4. このイメージをサーバーにプルして実行します(もちろん、最初にサーバーにDockerがインストールされている必要があります)

docker pull registry.cn-hangzhou.aliyuncs.com/namespace/warehouse name:[イメージのバージョン番号]

ssh 経由でサーバーにログインし、上記のコマンドを入力して、プルダウンされるかどうかを確認します。

4. 実行して動作するか確認する

ここではdockerのポート8080をサーバーのポート28080にマッピングします

OK、サーバーの IP: 28080 を入力して、Hello World が表示されるかどうかを確認します。(ポートを開くことを忘れないでください)

Flask アプリケーションの Docker デプロイメントの実装手順に関するこの記事はこれで終わりです。Flask アプリケーションの Docker デプロイメントに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Flask および Django フレームワークのカスタム モデル クラスのテーブル名と親クラスに関連する問題の分析
  • Flaskアプリケーションをサーバーにデプロイする方法
  • uWSGI と Nginx を使用して Flask プロジェクトをデプロイする方法の例
  • Docker を使用して Nginx+Flask+Mongo アプリケーションをデプロイする
  • CentOS7 デプロイメント Flask (Apache、mod_wsgi、Python36、venv)
  • Flask フレームワーク構成依存パッケージ情報に基づく Python プロジェクトの移行と展開
  • CentOS に Flask プロジェクトをデプロイする方法
  • CentOS 7.0 は Nginx を使用して Flask アプリケーションをデプロイするチュートリアル
  • Alibaba Cloud での Ubuntu 1.4 Flask + WSGI + Nginx の展開の詳細説明
  • flaskblogアプリケーションをDigitalOceanサーバーにデプロイする
  • Mac OS に Nginx、FastCGI、Flask フレームワークを導入するチュートリアル
  • Docker に Python の Flask フレームワークをデプロイするチュートリアル
  • Flask を使用してモデルをサービスとしてデプロイする方法

<<:  Vue スクロールダウンしてさらにデータを読み込む スクロールケースの詳細な説明

>>:  Mysql 文字列の傍受と指定された文字列内のデータの取得

推薦する

Vue でインデックスをキー属性値として使用することが推奨されないのはなぜですか?

目次序文キーの役割差分アルゴリズムにおけるキーの役割ヘッドノードを同期するテールノードを同期する新し...

MySQL 重複インデックスと冗長インデックスの例の分析

この記事では、例を使用して MySQL の重複インデックスと冗長インデックスについて説明します。ご参...

Linuxの簡単な分析でファイアウォールの状態と外部に開いているポートの状態を確認する

1. ファイアウォールの状態を確認するファイアウォールのステータスを確認する systemctl s...

MySQL で SQL 文の実行時間を表示する方法

目次1. 初期SQLの準備2.MysqlはSQL文の実行時間をチェックします3. さまざまなクエリの...

deepin 2014 システムに MySQL データベースをインストールする方法

Deepin 2014 のダウンロードとインストールDeepin 2014 のダウンロードとインスト...

Vue + 要素を使用して背景データをオプションに動的に表示する

必要:ハードコードされたデータの代わりに、セレクター内のオプション値の動的な表示を実装します。私のロ...

WeChatアプレットでQRコードを識別するために長押しする実装プロセス

序文公式アカウントのQRコードは長押しで認識できることは皆さんご存じですが、ミニプログラムに対する制...

ユーザーエクスペリエンスの要素またはWebデザインの要素

システムとユーザー環境の設計<br />Apple システムの成功は、そのシステム アー...

CSSスタイルとセレクターの使い方

HTML で CSS を使用する 3 つの方法: 1. インラインスタイル: 要素のスタイル属性を通...

InnoDB エンジンの redo ファイルのメンテナンス方法

InnoDB REDO ログ ファイルのサイズと数を調整する場合は、次の手順に従います。 1. My...

フロントエンドの状態管理(パート 1)

目次1. フロントエンドの状態管理とは何ですか? 2. ヴュークス3. バス4. ウェブストレージ序...

シーケンス関数を実装する MySQL コード

MySQLはシーケンス関数を実装する1. シーケンスレコードテーブルを作成する テーブル `sys_...

HTML特殊文字の徹底分析

HTML徹底解析(14)特殊文字 ■ よく使われる特殊文字 HTMLタグを知っていれば、特殊文字の使...

JavaScriptのonclickとclickの違いの詳細な説明

目次addEventListener が必要な理由は何ですか? addEventListener を...