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

推薦する

MySQL データベース監視ソフトウェア lepus の使用上の問題と解決策

lepus3.7 を使用して MySQL データベースを監視中に、次の問題が発生しました。このブログ...

JavaScriptの原理と方向性

これが何を指しているのかをどのように判断するのでしょうか? ①グローバル環境で呼び出された場合はwi...

MYSQLストアドプロシージャコメントの詳細な説明

目次1. 使用方法2. 準備3. 文法3.1 変数と代入3.2 入力および出力パラメータ3.3 プロ...

CSSは親コンテナのdivをimg画像で埋め、コンテナのサイズに適応します。

ページに複数の画像を導入すると、画像のサイズがばらつくことがあります。しかし、それらを一貫したサイズ...

WeChatアプレットで数字当てゲームを実装する実際のプロセス

目次機能紹介レンダリング1. ホームページレンダリング用のコード(index03) 2. ゲーム開始...

Windows での MySQL 8.0.15 の詳細なインストールと使用のチュートリアル

この記事では、MySQL 8.0.15の詳細なインストールと使用方法のチュートリアルを参考までに紹介...

IDEA が MySQL データベースに接続できない問題の 6 つの解決策

この記事では、IDEA が MySQL データベースに接続できない問題に対する 6 つの解決策を主に...

HTML 選択オプションの基本的な理解と使用

JavaScript での HTML (選択オプション) の詳細な説明1. 基本的な理解:コードをコ...

イベントバブリング、イベントキャプチャ、イベント委任に基づく詳細な説明

イベントバブリング、イベントキャプチャ、イベント委任JavaScript では、イベント委譲は非常に...

HTML の基礎: HTML コンテンツの詳細

まずは本体から始めましょう:ウェブページを閲覧するとき、最初に目に留まるのは通常、ページの背景です。...

Reactの親コンポーネントと子コンポーネント間のデータ転送の詳細な説明

目次1. 親コンポーネントが子コンポーネントにデータを渡す1.1. 親コンポーネントコード1.2. ...

一般的なMysql DDL操作の概要

図書館管理ライブラリを作成する データベースを作成します [存在しない場合] ライブラリ名;ライブラ...

Windows 10 での Hyperledger Fabric 1.4 環境構築プロセスの図

内容Hyperledger fabric1.4環境のWindows 10でのセットアップ前提条件Wi...

Tomcat8はcronologを使用してCatalina.Outログを分割します

背景tomcat によって生成された catalina.out ログ ファイルが分割されていない場合...

Svelte の Defer Transition を Vue で実装する方法

最近、Rich Harris の <Rethinking Reactivity> ビデオ...