クラウドネイティブ 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​​.

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

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

推薦する

ウェブサイト運用その1 - 運用計画

今日は、ウェブサイトの運営に関する一連の記事を公開し、個人的な運営経験や遭遇した困難を共有することを...

Webmaster.com からの毎日のレポート: 冬を乗り切るために 2,859 の共同購入サイトが閉鎖、高級品 E コマースへの突然の攻撃

1. 115クラウドディスクがパブリック共有を停止したという噂は誇大宣伝であり、115コミュニティを...

検索エンジン最適化中に高品質のユーザーエクスペリエンスを作成するためのウェブサイトコンテンツ要素の分析

ご存知のとおり、Baidu 検索エンジンの継続的なアップグレードにより、ユーザー エクスペリエンスが...

黄家朗:ウェブサイトが教育ネットワークマーケティングの生死を決める

黄家朗著序文:私は教育分野で「教育電子商取引」と「オンライン教育は美しいシリーズ」の2つのシリーズを...

地域拠点起業シリーズ企画分析

みなさんこんにちは。私はCaogen Geです。前回のローカルサイト起業に関するくだらない記事では、...

クラウドベースのデータソリューション: デジタル変革の道をリード

ローカル データのバックアップおよび取得インフラストラクチャにより、ネットワーク セキュリティとハー...

#US VPS# vortexnode-1.99 USD/KVM/1G RAM/40G HDD/500G トラフィック

Vortexnodeはカナダに登録されており、2017年にVPSの運営を開始しました。2017年にL...

Weiboマーケティングスキル:ファンを惹きつけ、交流する方法

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス鄧超は「走れ!男」の演技...

Alibaba Cloud 上の複数のアカウントを一元管理

1. マルチアカウントアーキテクチャ設計Alibaba Cloud リソースディレクトリ (RD) ...

編集者への一言:私たちの厄介な立場にどう対処するか

インターネットの影響は日々変化しています。オンラインマーケティングは多くの企業の主な焦点となっていま...

百度のAIの強みが陽泉市のスマートシティ構築を支援

[51CTO.comよりオリジナル記事] Baiduは長年にわたりスマートシティ建設の推進に努めてき...

バラクーダがクラウド セキュリティ ガーディアンをリリースし、Amazon Detective と統合

中国(2019年12月9日) – クラウドセキュリティソリューションの大手プロバイダーであるバラクー...

Javaロックから分散ロックへ

[[436819]]序文Synchronized ロックと ReentrantLock ロックは、並...