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サブクエリの詳細な例

サブクエリの分類返された結果セットによる分類サブクエリは、返される結果セットの違いに応じて、テーブル...

Linux で実行中のすべてのプロセスを表示する方法

ps コマンドを使用できます。プロセスの PID など、現在実行中のプロセスに関する関連情報を表示で...

CSS フロントエンドページレンダリング最適化属性 will-change の具体的な使用法

序文スクロールやサイズ変更などのスクロール イベントがトリガーされると、トリガーの頻度が非常に高くな...

mysql replace into の使用法の詳細な説明

replace ステートメントは、一般的に insert ステートメントに似ています。ただし、テーブ...

docker.service 起動エラーの詳細なトラブルシューティング

エラーを報告するには次のコマンドを実行しますsystemctl dockerを再起動しますエラーメッ...

MySQLのあいまいクエリインデックスの失敗の問題を解決するいくつかの方法

% ワイルドカードを使用すると、インデックス失敗の問題が発生することがよくあります。ここでは、lik...

シンプルなショッピングフォームを実装するJavaScript

この記事では、簡単なショッピングフォームを実装するためのJavaScriptの具体的なコードを参考ま...

MySQL 最適化のケーススタディ

1. 背景Youzan の各 OLTP データベース インスタンスには、実行時間が特定のしきい値を超...

Springboot アプリケーションを迅速にデプロイするために Docker とアイデアを統合する詳細なプロセス

目次1. はじめに2. 環境とツール3. Dockerをインストールし、リモート接続を構成する4. ...

Centos7.3は起動時に自動的に起動または指定されたコマンドを実行します

Centos7では、/etc/rc.d/rc.localファイルの権限が削減されており、実行権限があ...

PSSHを使用してLinuxサーバーを一括管理する

pssh は、多数のマシンでのバッチ ssh 操作に使用される、Python で実装されたオープン ...

Linux でファイルを削除するさまざまな方法の効率の比較

Linux で大量のファイルを削除する効率をテストします。まず500,000個のファイルを作成する$...

MySQL 並列レプリケーションの簡単な分析

01 並列レプリケーションの概念MySQL のマスター スレーブ レプリケーション アーキテクチャで...

Linux FTP匿名アップロードとダウンロードが自動的に開始される問題を解決する

勉強や仕事で FTP サーバーを頻繁に使用する場合は、起動時に自動的に起動するように設定できます。設...

Springboot プロジェクトに動的にパラメータを渡すための Docker の実装方法

背景最近、Docker 初心者の友人から、毎回プロジェクト構成ファイルにハードコーディングしてサービ...