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はユーザーのページ操作を記憶するためにクッキーを使用します

推薦する

Nginx ロードバランシング クラスタの実装

(1)実験環境youxi1 192.168.5.101 ロードバランサーyouxi2 192.168...

HTML で div+CSS を使用してシンプルな矢印アイコンを実装するコード

ウェブデザインでは、ウェブページを美しく見せるために矢印を装飾としてよく使用します。現在、多くのウェ...

CSSスクロールバーのスタイルをカスタマイズする方法の詳細な説明

この記事では、CSS スクロールバー セレクターを紹介し、Webkit ブラウザーと IE ブラウザ...

登録フォームのデザインルール

随分前に「Patterns for Sign Up & Ramp Up」を読み終えました。今...

Linux Samba サーバーの超詳細なインストールと構成 (問題解決付き)

目次Samba サーバーの紹介Samba サーバー コンポーネントSamba サーバー関連の設定ファ...

ES6スプレッド演算子の使用例

目次スプレッド演算子とレスト演算子とは何ですか?配列スプレッド演算子残り演算子(コレクション関数)ス...

Vue の匿名スロットと名前付きスロットの詳細な説明

目次1. 匿名スロット2. 名前付きスロット要約するスロット (slot) は、Vue のコンテンツ...

mysql5.7.14 解凍版インストールグラフィックチュートリアル

MySQL は、コミュニティ エディション (コミュニティ サーバー) とエンタープライズ エディシ...

Grafana+Prometheus を使用して MySQL サービスのパフォーマンスを監視する

Prometheus (プロメテウスとも呼ばれる) 公式サイト: https://prometheu...

JavaScript Proxyオブジェクトの詳細な説明

目次1. プロキシとは何ですか? 2. 使い方は? 1. プロキシを使用する簡単な例2. 対象オブジ...

CocosCreator 一般的なフレームワーク設計リソース管理

目次Cocos Creator のリソース管理に関する問題リソースの依存関係リソースの使用レスローダ...

Reactドラッグフックを実装するための100行以上のコード

序文ソースコードは合計で 100 行強しかありません。これを読めば、react-dnd などの成熟し...

Ubuntu で .sh ファイルを実行するいくつかの方法の違いについて簡単に説明します。

序文特に bash 環境では、スクリプトの実行方法によって結果が異なります。スクリプトを実行する方法...

Windows 10 の Docker で countly-server を展開して実行するプロセス

私は最近countlyに触れて、慣れてきました。私は、必要に応じてcountlyのクラッシュプラグイ...