Dockerfileを使用して独自のイメージを作成する方法

Dockerfileを使用して独自のイメージを作成する方法

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 を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Dockerfile の CMD および ENTRYPOINT コマンドの詳細な説明
  • 最高のDockerfileを書く方法
  • Dockerfile の COPY コマンドと ADD コマンドの詳細な説明
  • Dockerfileイメージ構築ファイルとDockerの関連コマンドの詳細な紹介
  • Dockerfile を使用して MySQL イメージを構築し、データの初期化と権限設定を実装する詳細な説明
  • Dockerfile における ENV 命令の具体的な使用法の詳細な説明
  • Dockerfileの使用例
  • 公式 Tomcat イメージを作成するための Dockerfile とイメージの使用方法の詳細な説明
  • Dockerfile の一般的なコマンドの概要
  • Dockerfile を使用して SpringBoot プロジェクトをデプロイする方法
  • Dockerfile を使用して Java ランタイム環境のミラーを作成する方法
  • Dockerfile 命令 ADD と COPY の紹介
  • Dockerfileにおけるマルチステージ(マルチステージビルド)の詳しい説明
  • Docker の基礎: Dockerfile コマンドの詳細な説明
  • Dockerfile を使用して Node.js サービスをデプロイする方法
  • Dockerfile の手順の説明
  • Dockerfile命令VOLUMEの簡単な紹介
  • Dockerfileの簡単な紹介

<<:  MySQLの再帰問題

>>:  jsはユーザーのページ操作を記憶するためにクッキーを使用します

推薦する

フロントエンドのパフォーマンス最適化を学習するための準備として、HTML ページのレンダリング プロセスを理解する (続き)

昨夜、ブラウザのレンダリングプロセスに関するエッセイを書きましたが、小さなコードで説明しただけでした...

Ubuntu20.04 VNCのインストールと設定の実装

VNC はリモート デスクトップ プロトコルです。 VNC を使用して Ubuntu 20.04 を...

CSS3+ベジェ曲線でスケーラブルな入力検索ボックス効果を実現

では、早速レンダリングを見てみましょう。 コア コードはtransition: cubic-bezi...

httpsウェブサイトにリファラーhttpsとhttpジャンプリファラーを送信させる方法

この記事では、HTTP プロトコルのリファラーのメタデータ パラメータの提案について説明します。この...

CentOS7.6にMYSQL8.0をインストールする詳細な手順

1. 一般的に、CentOS では mariadb がデフォルトでインストールされているため、まず ...

jsフェッチ非同期リクエストの使用の詳細な例

目次非同期を理解するフェッチ(url)レスポンス.json() asyncとawaitを組み合わせる...

HTML ヘッド構造

以下では、よく使われるヘッド構造と、各タグや要素の意味や使用シーンを紹介します(この記事は、Yisi...

JS クロスドメイン XML - AS URLLoader を使用

最近、機能拡張の要件を受け取りました。ただし、新しい要件で参照されているデータインターフェイスは、X...

現在のマウススライドの座標を取得するVue+openlayer5メソッド

序文: Vue プロジェクトで現在のマウスの座標を取得するにはどうすればよいでしょうか。ここで共有す...

MySQL 5.7.27 のインストールと設定方法のグラフィックチュートリアル

MySQL 5.7.27のインストールチュートリアルは以下のように記録され、皆さんと共有されています...

nginx がアップストリーム アドレスにジャンプしない問題の解決方法

序文今日、nginx で非常に奇妙な問題に遭遇しました。フロントエンドの tomcat がページにジ...

フロントエンドにアニメーション遷移効果を実装する方法

目次導入従来のトランジションアニメーションCSS トランジションアニメーションjsアニメーション従来...

MySQL 学習 (VII): Innodb ストレージ エンジン インデックスの実装原理の詳細説明

概要データベースでは、ツリー ディレクトリと同様に、インデックスを使用してデータ検索を高速化します。...

vue-element-admin グローバル読み込み待機中

最近の要件:グローバルロード、すべてのインターフェースはロード待機機能を表示するかどうかを手動で制御...

Linux での sshd サービスとサービス管理コマンドの詳細な説明

sshd SSH は Secure Shell の略で、アプリケーション層のセキュリティ プロトコル...