1. はじめに 以前は、Python アプリケーションの作成を開始したい場合、最初のステップはマシンに Python ランタイム環境をインストールすることでしたが、インストールされた環境はオンラインの環境と一致している必要があり、非常に面倒でした。 Docker を使用すると、インストールせずに、公式の Docker レジストリまたはその他のリポジトリからポータブルな Python ランタイム環境イメージを取得できます。このイメージに基づいてアプリケーションを開発すると、アプリケーション、依存関係、ランタイムがすべて一緒に実行されるようになります。 2. Pythonイメージを構築する 2.1. 独自のイメージを構築するには、まず Dockerfile というファイルを作成し、イメージを作成してコンテナを実行するために必要な手順を定義する必要があります。 Dockerfile 内の各命令はイメージ内にレイヤーを作成します。 Dockerfile を変更してイメージを再構築すると、変更されたレイヤーのみが再構築されます。これが、他の仮想化テクノロジーと比較して、イメージが軽量、小型、高速になる理由の 1 つです。 空のディレクトリを作成し、Dockerfile というファイルを作成し、次の内容をコピーしてファイルに貼り付け、保存します。 # 公式のPythonランタイムを親イメージとして使用する python:2.7-slimより # 作業ディレクトリを /app に設定する ワークディレクトリ /app # 現在のディレクトリの内容を /app のコンテナにコピーします ./app を追加する # requirements.txt で指定された必要なパッケージをインストールします pip install --trusted-host pypi.python.org -r requirements.txt を実行します。 # ポート80をコンテナ外からアクセスできるようにする エクスポーズ80 # 環境変数を定義する ENV NAME ワールド # コンテナが起動したらapp.pyを実行します コマンド ["python", "app.py"] 2.2 Dockerfile ファイルと同じディレクトリに requirements.txt ファイルと app.py ファイルを作成します。 Dockerfile ファイル内の ADD コマンドにより、上記 2 つのファイルが最終イメージに追加されます。EXPOSE コマンドにより、コンテナのポート 80 にアクセスすることで app.py の内容にアクセスできます。注: ここでのポート 80 は、コンテナによって公開されるポートを指し、実際のマシンのポートを指すものではありません。
アプリ.py FlaskからFlaskをインポート RedisからRedisをインポートすると、RedisError インポートOS インポートソケット # Redisに接続する redis = Redis(ホスト = "redis"、db = 0、socket_connect_timeout = 2、socket_timeout = 2) アプリ = Flask(__name__) @app.route("/") デフハロー(): 試す: 訪問数 = redis.incr("counter") RedisErrorを除く: visits = "<i>Redis に接続できません。カウンターが無効です</i>" html = "<h3>こんにちは {name}!</h3>" \ "<b>ホスト名:</b> {ホスト名} <br/>" \ 「<b>訪問数:</b> {訪問数}」 html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits) を返します。 __name__ == "__main__" の場合: app.run(ホスト='0.0.0.0'、ポート=80) 2.3 アプリケーションをミラーにパッケージ化し、DockerFile ディレクトリで実行します。これにより、Docker イメージが作成され、イメージにわかりやすい名前が付けられるように -t でタグ付けされます。 docker ビルド -t フレンドリーハロー 3. イメージを実行する -p を使用してアプリケーションを実行し、マシン上のポート 4000 をコンテナーによって公開されているポート 80 にマップします。 docker run -p 4000:80 フレンドリーハロー シェルで curl コマンドを使用して同じ内容を表示することもできます。 $ カール http://localhost:4000 <h3>Hello World!</h3><b>ホスト名:</b> 8fc990912a14<br/><b>訪問数:</b> <i>Redis に接続できません。カウンターが無効です</i> アプリケーションを終了するにはCtrl+Cを押してください 次に、アプリケーションをバックグラウンドで実行します。 docker run -d -p 4000:80 フレンドリーハロー すべてのコンテナ情報を表示
次に、以下に示すように、CONTAINER ID を使用して docker container stop を実行し、プロセスを終了します。 docker コンテナ停止 1fa4ab2cf395 4. イメージを解放する 4.1. Alibaba Cloud の Docker レジストリを使用していますが、こちらの方が高速だと思います。まず、Alibaba Cloud アカウントが必要です。次に、ログインして新しいウェアハウスを作成し、名前空間やその他の情報を設定します。 4.2 Alibaba Cloud の Docker レジストリにログインします。以降の操作を実行するにはログインが必要です。 sudo docker ログイン --username=admin registry.cn-hangzhou.aliyuncs.com 4.3 イメージにタグを付けます。タグはオプションです。タグを付けない場合、デフォルトは最新です。 形式: docker タグ image_name registry_url/namespace/repository_name:[タグ] 例えば docker タグ friendlyhello registry.cn-hangzhou.aliyuncs.com/shuzhou/demo1:latest ローカルミラーリストを表示する dockerイメージls 4.4 イメージをリリースする docker push registry.cn-hangzhou.aliyuncs.com/shuzhou/demo1:latest 4.5 これで、任意のマシンで次のコマンドを実行してイメージを実行できます。 docker run -p 4000:80 registry.cn-hangzhou.aliyuncs.com/shuzhou/demo1:latest 4.6 イメージをプルする docker pull registry.cn-hangzhou.aliyuncs.com/shuzhou/demo1:latest 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。 以下もご興味があるかもしれません:
|
<<: MySQL は重複データを削除して最小の ID ソリューションを維持します
>>: MySQL で戻り値ありと戻り値なしのストアド プロシージャを書く 2 つの方法
目次1. Docker Composeとは何か、インストールして使用する方法2. DOCleverと...
MySQL 5.7.19 winx64 解凍版のインストールチュートリアルを収録しています。具体的な...
方法1: onclickイベントを使用する <input type="button&...
1: nginx のインストール方法については詳しく説明しません。Baidu で検索してください。 ...
目次1. コンポーネント通信1. Props 親コンポーネント ---> 子コンポーネント通信...
目次1. インストールと導入2. PDFファイルをパッケージ化してエクスポートする方法構成の詳細PD...
>1 データベースを起動するcmd コマンド ウィンドウで、「sqlplus」を直接入力して ...
1. はじめにWeb プロジェクトを Linux サーバーで公開する場合、SSL 証明書を構成する必...
[mysql] replace の使用方法 (フィールドの内容の一部を置き換える) [mysql]...
Mac OS X で TAR.GZ から MySQL 5.7 をインストールする MySQL 5.6...
序文: 「MySQL 入門」シリーズの記事は終了しました。今後も引き続き MySQL に焦点を当て、...
目次最初に要約: 🌲🌲 序文: 🍬🍬公開🍬🍬 🍬🍬グローバル🍬🍬 🍬🍬ボールボックス🍬🍬 🎉🎉🎉結論...
mysql5.6 のグリーン バージョンを解凍すると、my-default.ini ファイルが作成さ...
少し前に、「ORACLE でコミットされていないトランザクションの SQL ステートメントを見つける...
序文MySQL に精通している読者は、MySQL が非常に迅速に更新されることに気付くかもしれません...