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 文字列の傍受と指定された文字列内のデータの取得

推薦する

CentOS7 systemdにカスタムシステムサービスを追加する方法

システムド: CentOS 7のサービスsystemctlスクリプトは、/usr/lib/syste...

CSSプリコンパイル言語とその違いの詳細な説明

1. 何ですか マークアップ言語として、CSSは比較的シンプルな構文とユーザーに対する要件が低いが、...

Vue のスロットリング関数使用時の落とし穴ガイド

序文一般的なビジネス シナリオでは、検索ボックスへの入力が完了した後、検索データを取得するために関連...

HTML の小さなタグの使用に関するヒント

<em></em> などのフレーズ要素を使用すると、意図した視覚スタイルを維...

MySQLでMyISAMストレージエンジンをInnodbに変更した操作記録のまとめ

一般的に、MySQL はデフォルトでさまざまなストレージ エンジンを提供しており、次のように表示され...

Vueでキャッシュされたページを管理する方法

目次問題1: 破壊1. 破壊する方法2. いつ破壊するか2.1 解決策1: route.queryを...

CSS の両端揃えを実現する div+css レイアウトの 4 つの方法の概要

2 端揃えを実現する div+css レイアウトは、Web ページの組版でよく使用されます。この記事...

シェルスクリプトによるDockerコンテナの起動順序の制御の詳細な説明

1. 遭遇した問題分散プロジェクトの展開プロセスでは、サーバーの再起動後にアプリケーション(データベ...

Vue コンポーネント値転送中のデータ損失の分析と解決

序文前回の記事では、JavaScript の 2 つのデータ型、基本型と参照型、および参照型の浅いコ...

MySQL でのデータベース間クエリの例

序文MySQL では、クロスデータベース クエリは主に 2 つの状況に分けられます。1 つは同じサー...

トップに戻るボタンを実装するJavaScript

この記事では、トップに戻るボタンを実装するためのJavaScriptの具体的なコードを参考までに紹介...

Docker を使用して MySQL および Redis サービスをデプロイする方法

目次Dockerを使用してMySQLサービスをデプロイする方法DockerでRedisサービスをデプ...

Pure CSS と Flutter はそれぞれブリージング ライト効果を実現します (サンプル コード)

前回、非常に熱心なファンから、月を呼吸する光の効果にできるかどうか尋ねられました。月の大きさの写真が...

Vue+SpringBoot+Shiroのクロスドメイン問題を解決する

目次1. Vueフロントエンドを構成する1. クロスドメイン構成を開発する2. 本番環境のクロスドメ...

xshell を使用して VMware で Linux に接続する方法 (2 つの方法)

【序文】最近、ITOO の試験システムのストレステストを行いたいので、自分のコンピュータに Lin...