クラウドネイティブ Docker デプロイメント Flask 実践

クラウドネイティブ Docker デプロイメント Flask 実践

1. Dockerの理解

1. Dockerの簡単な紹介

Docker はオープンソースのアプリケーション コンテナー エンジンであり、開発者はこれを使用してアプリケーションと依存パッケージをポータブル コンテナーにパッケージ化し、一般的な Linux または Windows オペレーティング システム マシンに公開できます。仮想化も実現できます。コンテナは完全にサンドボックス化されており、コンテナ間にインターフェースはありません。

2. Dockerはクライアントサーバーアーキテクチャを採用している

Docker クライアントは Docker デーモンと通信し、Docker コンテナの構築、実行、配布という面倒な作業を実行します。 Docker クライアントとデーモンは同じシステム上で実行することも、Docker クライアントをリモート Docker デーモンに接続することもできます。 Docker クライアントとデーモンは、REST API を使用して UNIX ソケットまたはネットワーク インターフェイスを介して通信します。もう 1 つの Docker クライアントは Docker Compose です。これを使用すると、一連のコンテナーで構成されたアプリケーションを操作できます。

2. DockerFileの説明

  • FROMコマンド
 FROM: イメージの構築に使用されたイメージ
  • MAINTAINERコマンド
 MAINTAINER: イメージ管理者の名前またはメールアドレス
  • RUNコマンド
 RUN: イメージをビルドするときに実行する命令
  • CMDコマンド
 CMD: コンテナ実行時に実行されるシェル環境
  • VOLUMEコマンド
 VOLUME: コンテナのマウントポイントを、ホストによって自動的に生成されたディレクトリまたは他のコンテナに指定します。
  • USER コマンド
 USER: RUN、CMD、 ENTRYPOINT コマンドの実行ユーザーを指定します。
  • WORKDIR コマンド
 WORKDIR: RUN、CMD、ENTRYPOINT、COPY  ADD作業ディレクトリを設定します
  • EXPOSEコマンド
 EXPOSE: コンテナのサービスポートを宣言します。
  • ENV コマンド
 ENV: コンテナ環境変数を設定する
  • ADD コマンド
 ADD: ファイルまたはディレクトリをコンテナにコピーします。 URL または圧縮パッケージの場合は、自動的にダウンロードまたは解凍されます。
  • コピーコマンド
 COPY: ADD と同様に、ファイルまたはディレクトリをコンテナーにコピーしますが、自動ダウンロードや解凍の機能はありません。
  • ENTRYPOINT コマンド
 ENTRYPOINT: コンテナの実行時に実行されるシェルコマンド

3. Python Flask フレームワークの Docker クイック デプロイ

1. 最小限のフラスコを作成する

①、app.pyファイル。

 #!/usr/bin/env python
輸入フラスコ
# アプリケーション作成します
APP = フラスコフラスコ( __name__ )
@ アプリルート( '/' )
定義インデックス():
「hello 51CTO」 を返します
__name__ == '__main__' の場合:
アプリ走る()

②、 requirements.txt ファイル。

このプロジェクトの Python 依存パッケージをエクスポートします。

 pip フリーズ> 要件.txt 

2. Flaskコードとrequirements.txtをサーバーにアップロードする

①.アップロードするファイルを準備します。

②. MobaXterm を使用してサーバーに接続します。

③.ファイルをドラッグアンドドロップしてサーバーにアップロードします。

3. Docker環境の準備

①、Dockerがpythonイメージをプルします。

 docker プルpython

②. Dockerfile ファイルを書き込みます。

 FROM python #ベースイメージ、python
MAINTAINER yukoyu #ミラー作者情報
WORKDIR / アプリ
#作業ディレクトリ、このディレクトリはイメージ内の作業ディレクトリに対応しており、パスに関連する以降のすべての操作は
#WORKDIRの相対パスを使用して指定します
コピー要件txt の要件TXT
# requirements.txt image / app / requirements.txt コピーします
pip install -r requirements .txt -i https://pypi.tuna.tsinghua.edu.cn/simple ​​ を実行します
#pipパッケージをインストールする
コピー。 。
#現在のファイル内のディレクトリを/ appディレクトリにコピーします
ENV FLASK_APP アプリ
#flask run コマンドが起動ファイルの場所を見つけられるように環境変数を設定します
CMD [ "flask""run""-h""0.0.0.0""-p""5000" ]
# 起動名flask run - h 0.0.0.0 - p 5000 を実行します。リスト内の各要素はスペースを表します。

③.ディレクトリ構造を準備します。

4. Dockerfileを使用してイメージを構築する

①.工事。

 docker build -t flasktest : 1.0

②.成功したかどうかを確認します。

③、flasktestイメージを実行します。

 docker run --name flasktest01 -p 5000 : 5000 flasktest : 1.0 を実行ます。 

4. テスト結果

正常に実行されました。

オープンソースの詳細については、以下をご覧ください。

51CTO オープンソース基本ソフトウェアコミュニティ

​​https://ost..com​​.

<<:  ガートナー: 中国におけるパブリック クラウド導入のベスト プラクティス

>>:  インフォア:業界を深く掘り下げ、顧客がより早く価値を実現できるよう支援

推薦する

ウェブページの信号対雑音比と SEO 最適化

ウェブマスターの友人は皆、SEO 最適化について知っているかもしれませんが、ウェブページの信号対雑音...

SEOになるには、さらに先を見据える必要がある

インターネット企業であれ、伝統的な企業であれ、最大の目標は長期的な利益を追求することです。目先の利益...

オンライン教育が直面する困難についての詳細な議論

オンライン教育は、コンピューターインターネットに基づいた教育モデルです。オンライン教育は継続的に発展...

Kubernetes セキュリティ戦略: データ ウェアハウスを保護し、ハッカーを阻止する

みなさんこんにちは。私はNezhaです。今日は、履歴書を充実させ、面接のレベルを上げ、話す話題を用意...

百度の外部リンク判定基準に準じて外部リンクを構築する考え方

昨日、百度ウェブマスタープラットフォームの李氏は「外部リンクの判断について」を発表しました。外部リン...

テンセントクラウドはICBCの新世代顔認証システムの立ち上げを支援し、ユーザーは顔認証をエレガントに利用できるようになる。

銀行で顔認識機能を使って取引を行う場合、何度も「首を振る」必要がなくなります。記者は12月26日、中...

日刊トピック:父を頼りにするアリババの動画業界参入は、動画業界の様相を変えることができるのか?

A5ウェブマスターネットワーク(www.admin5.com)は4月30日、アリババが最近とても忙し...

5G時代になりましたが、モバイルエッジコンピューティング(MEC)が何なのかまだご存じないですか?

[[391854]] 「エッジ コンピューティング」の基本的な考え方は理解できたと思いますが、今、あ...

securespeed-3.4 USD/1G メモリ/30G ハードディスク/1T トラフィック/クアドラネット/ロサンゼルス

securespeed の最後のプロモーションは 2 月初旬に行われ、それから 1 四半期が経過しま...

コンテナとKubernetesがあらゆるものを実行できる可能性を秘めている理由

[[281973]] 「Kubernetes がダンプ トラックである理由」では、ダンプ トラックが...

「生理休暇」事件から学ぶアプリイベントマーケティングのやり方

最近、微博では「生理休暇」の話題が非常に人気となっている。この事件の発端は、厦門のインターネット企業...

李開復:垂直型ソーシャル製品とエンタープライズレベルのサービスには発展のチャンスがある

[はじめに] プラットフォーム型ソーシャルプロダクトの機会は非常に小さいですが、Kai-Fu Lee...

ゲーム情報ストリームの配置方法に関するプライベートヒントを無料でお伝えします!

この記事を読む前に、まずは「情報フロー広告の出稿によるコンバージョン率向上の基本はマッチングである」...

ウェブサイトの収益を増やすための3つのヒント

みなさんこんにちは。私はフルタイムのウェブマスターです。今日は皆さんとコミュニケーションをとる時間が...