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

推薦する

Vue3を使用してjsで呼び出せるコンポーネントを実装する

目次序文1. 従来のVueコンポーネント1. メインコンポーネントコード: 2. 使用方法3. 成果...

Nginx は高可用性クラスタ構築を実装します (Keepalived+Haproxy+Nginx)

1. コンポーネントと実装機能Keepalived: Haproxy サービスの高可用性を実現し、...

MySQL例外に対する一般的な解決策をいくつか分析する

目次序文1. コードによって設定されたデータベース名またはパスワードがローカルデータベースと一致して...

モバイルアダプティブスタイルで@mediaを使用する方法

一般的な携帯電話のスタイル: @media all および (orientation : 縦向き) ...

CSS で「プラス記号」効果を実装するためのサンプルコード

以下に示すプラス記号の効果を実現するには: この効果を実現するには、div 要素だけが必要です。 b...

WindowsとLinux間でファイルを転送する方法

WindowsとLinux間のファイル転送(1)WinSCPを使用して、WindowsファイルをLi...

gbk utf8 GBK と UTF-8 ウェブページエンコーディングを正しく理解して使用する方法

Web ページ エンコーディングは英語では web page encoding と翻訳され、Web ...

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

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

MySQL ビューの原理と使用法の詳細な分析

序文: MySQL では、ビューはおそらく最も一般的に使用されるデータベース オブジェクトの 1 つ...

Mysql | ワイルドカード(%、_ など)を使用したファジークエリの詳細な説明

ワイルドカードのカテゴリ: %パーセント ワイルドカード: 任意の文字が任意の回数出現できることを示...

Linux での mysql および mysql.sock のインストールに関する問題

最近、Linux に Aphace、mysql、php をインストールするときに多くの問題に遭遇しま...

JavaScript でローカル変数をグローバル変数に変換する方法

まず関数の自己呼び出しを知る必要がある関数の自己呼び出し - 自己呼び出し関数1 回限りの関数 - ...

React 手書きタブ切り替え問題

親ファイル React をインポートし、{useState} を 'react' か...

Vue3のいくつかの利点についての簡単な説明

目次1. ソースコード1.1 モノレポ1.2 タイプスクリプト2. パフォーマンス2.1 ソースコー...

MySQL のストアド プロシージャを使用して 100 万件のレコードをすばやく生成する方法

序文テストを行う際、大量のデータによる負荷に耐えるプロジェクトの能力をテストするために、通常はテスト...