1. 空のディレクトリを作成する $ cd /home/xm6f/dev $ mkdir myapp $ cd myapp/ 2.vim Dockerfileの内容は次のとおりです。 ## 基本的なPythonランタイム環境 FROM python ## 作業ディレクトリを設定する WORKDIR /app ## 現在のシステムフォルダの内容をコンテナのアプリディレクトリにコピーします ADD ./app ## 必要な依存パッケージをインストールする RUN pip install -r softwares.txt ## コンテナ外へのアクセス用にポートを開く EXPOSE 80 エクスポーズ3088 エクスポーズ8080 エクスポーズ8066 ## 環境変数 ENV NAME HELLO を定義する ## コマンド CMD ["python","app.py"] を実行します 3. 依存関係をインストールする vim softwares.txt の内容は次のとおりです。 フラスコ レディス 4.vim app.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) 5. コンパイル docker build を実行します。 6. 新しいイメージが生成されたことを確認する $ docker イメージ リポジトリ タグ イメージ ID 作成 サイズ myfirstapp 最新 01ea1129a831 2時間前 699MB 7. 画像を開始する $ docker run -p 4000:80 myfirstapp バックグラウンドで実行することもできます: $ docker run -d -p 4000:80 myfirstapp 8. サービスへのアクセス # カール http://localhost:4000 <h3>Hello world!</h3><b>ホスト名:</b> a6655d0d7e74<br/><b>訪問数:</b> <i>Redis に接続できません。カウンタが無効です</i> またはブラウザを使用してサービスにアクセスします: http://192.168.1.160:4000 9. 現在実行中のイメージを表示する $ docker ps コンテナID MAGEコマンド作成ステータスポート名 2db45cab2bb4 myfirstapp "python app.py" 2 分前 2 分前にアップ 0.0.0.0:4000->80/tcp elastic_wilson 10. ミラーリングをやめる $ docker stop 2db45cab2bb4 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: jsはユーザーのページ操作を記憶するためにクッキーを使用します
昨夜、ブラウザのレンダリングプロセスに関するエッセイを書きましたが、小さなコードで説明しただけでした...
VNC はリモート デスクトップ プロトコルです。 VNC を使用して Ubuntu 20.04 を...
では、早速レンダリングを見てみましょう。 コア コードはtransition: cubic-bezi...
この記事では、HTTP プロトコルのリファラーのメタデータ パラメータの提案について説明します。この...
1. 一般的に、CentOS では mariadb がデフォルトでインストールされているため、まず ...
目次非同期を理解するフェッチ(url)レスポンス.json() asyncとawaitを組み合わせる...
以下では、よく使われるヘッド構造と、各タグや要素の意味や使用シーンを紹介します(この記事は、Yisi...
最近、機能拡張の要件を受け取りました。ただし、新しい要件で参照されているデータインターフェイスは、X...
序文: Vue プロジェクトで現在のマウスの座標を取得するにはどうすればよいでしょうか。ここで共有す...
MySQL 5.7.27のインストールチュートリアルは以下のように記録され、皆さんと共有されています...
序文今日、nginx で非常に奇妙な問題に遭遇しました。フロントエンドの tomcat がページにジ...
目次導入従来のトランジションアニメーションCSS トランジションアニメーションjsアニメーション従来...
概要データベースでは、ツリー ディレクトリと同様に、インデックスを使用してデータ検索を高速化します。...
最近の要件:グローバルロード、すべてのインターフェースはロード待機機能を表示するかどうかを手動で制御...
sshd SSH は Secure Shell の略で、アプリケーション層のセキュリティ プロトコル...