Docker を使用してイメージをローカルにパッケージ化してデプロイする方法

Docker を使用してイメージをローカルにパッケージ化してデプロイする方法

初めてDockerを使用してイメージをローカルにパッケージ化してデプロイする

まず、私のラップトップシステムはMACOS 10.15.4です
私がインストールしたdockerのバージョンはv19.03.5です

1. プロジェクトの構造は次のとおりです。

これは React プロジェクトであり、パッケージ化された静的リソース パスは dist ディレクトリです。

ここに画像の説明を挿入

2. フォーカスDockerfileとdocker/nginx.conf ファイル

1. Dockerfileはイメージを構築するために使われるテキストファイルです。詳しい紹介については、リンクを参照してください: Docker Dockerfile

私の Dockerfile の内容は次のとおりです。

nginxから
ワークディレクトリ /usr/src/app/
./docker/nginx.conf /etc/nginx/conf.d/default.conf をコピーします。
./dist /usr/share/nginx/html/ をコピーします。
エクスポーズ80
CMD ["nginx", "-g", "デーモンオフ;"]

Dockerfile 内の大文字の単語はコマンドです。各コマンドの意味は次のように説明されます。

  • FROM: カスタマイズされたイメージはすべて FROM イメージに基づいています。ここで、nginx はカスタマイズに必要な基本イメージです。以降の操作はすべて nginx に基づいています。
  • RUN: 後続のコマンド ラインを実行するために使用されます。形式は 2 つあります。
  • WORKDIR: 作業ディレクトリを指定します。 WORKDIR で指定された作業ディレクトリは、ビルドされたイメージのすべてのレイヤーに存在します。 WORKDIR で指定する作業ディレクトリは事前に作成しておく必要があります。 docker build イメージ構築プロセス中に、各 RUN コマンドによって新しいレイヤーが作成されます。 WORKDIR 経由で作成されたディレクトリのみが保持されます。
  • COPY: コピー命令。コンテキスト ディレクトリからコンテナー内の指定されたパスにファイルまたはディレクトリをコピーします。
  • EXPOSE: ポートを宣言するだけです。目的: イメージ ユーザーがイメージ サービスのデーモン ポートを理解し、マッピングの構成を容易にできるようにします。実行時にランダム ポート マッピングを使用する場合 (つまり、docker run -P)、EXPOSE ポートは自動的にランダムにマッピングされます。
  • CMD: RUN 命令と同様に、プログラムを実行するために使用されますが、2 つは異なるタイミングで実行されます。CMD は docker run 時に実行されます。 RUN は docker build にあります。機能: 起動したコンテナに対して実行するデフォルトのプログラムを指定します。プログラムが終了するとコンテナも終了します。 CMD 命令で指定されたプログラムは、docker run コマンドライン引数で指定されたプログラムによって上書きできます。注意: Dockerfile に複数の CMD 命令がある場合、最後の命令のみが有効になります。

2. docker/nginx.conf

サーバー{
  聞く 80;
  # gzip 設定
  gzip オン;
  gzip_min_length 1k;
  gzip_comp_レベル9;
  gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
  gzip_vary オン;
  gzip_disable "MSIE [1-6]\.";
  クライアントの最大ボディサイズは100mです。

  ルート /usr/share/nginx/html;

  位置 / {
    try_files $uri $uri/ /index.html;
  }
  場所 /api/ {
  	# バックエンドのアドレスは proxy_pass http://www.XXX.com/ です。
  }
}

3. docker buildコマンドを実行してイメージを作成する

実行したコマンドは、 docker build -t mydocker .
-t: イメージにmydockerというタグを付ける
最後にドットを忘れないでください。これは現在のパスにミラーイメージを作成することを意味します。

4. docker runを実行してイメージをデプロイする

実行したコマンドは: docker run -p 80:80 mydocker
-pはローカルマシンにマップされたポートを指定します
docker run -p ローカルポート: ミラーポート ミラー名

5. localhost:80を開いてプロジェクトを確認します

これは私にとって初めての Docker ローカル デプロイメントの経験です。多くの原則と Docker コマンドについてまだよくわかっていません。今後、さらに詳しく学習していきます。

ちょっとした問題を追記しておきます。今日、突然会社のプライベートクラウドにイメージをプッシュできなくなりました。ネットワーク環境の問題だったので、同僚にプッシュを手伝ってもらいました。
まずパッケージ化されたイメージをローカルに保存します。

docker save 10.10.10.52:5000/zhanwu-study/prod:4.1.2 > study.tar

次に、現在のディレクトリに生成された study.tar ファイルを DingTalk 経由で同僚に送信します。同僚は study.tar ファイルをローカル コンピューターにダウンロードし、次のコマンドを実行します。

docker load < study.tar

バージョンを更新します (新しいイメージは生成されず、2 つのバージョンは同じイメージになります)。

docker タグ 10.10.10.52:5000/zhanwu-study/prod:4.1.2 10.10.10.52:5000/zhanwu-study/prod:4.1.3

次に、プライベート クラウドにプッシュします。

docker push 10.10.10.52:5000/zhanwu-study/prod:4.1.3

これで、docker を使用してイメージをローカルにパッケージ化してデプロイする方法についての説明は終わりです。より関連性の高いローカル docker パッケージ化およびデプロイ イメージについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Dockerの国内イメージソースを変更する方法
  • Dockerはイメージ名とTAG操作の名前を変更します
  • Dockerイメージ内のファイルを表示する方法
  • Docker buildx を使用してマルチプラットフォーム イメージをビルドし、プライベート リポジトリにプッシュする方法
  • Azure Container Registry を使用してイメージを保存する際の問題

<<:  VUE ユニアプリコア知識の簡単な紹介

>>:  XHTML 入門チュートリアル: テキストの書式設定と特殊文字

推薦する

20個のJavaScriptワンラインコードを共有する

目次1. ブラウザのクッキーの値を取得する2. RGBを16進数に変換する3. クリップボードにコピ...

JavaScript での HTML キャンバスとページ ストレージ テクノロジの使用に関する詳細な説明

目次1. JavaScriptはHTMLでキャンバスを使用する2. ページストレージ技術1. Jav...

MySQLの基本操作学習ノートテーブル

テーブルを作成テーブルテーブル名を作成create table if not exists 表名 m...

HTML+CSS+JS でスタックカルーセル効果を実装するサンプルコード

効果:スライドショーが一方向に動く場合、各画像のサイズ、位置、透明度、レベルを変更する必要があります...

Linux echo テキスト処理コマンドの使用法と例

Linux ヘルプ ドキュメントでの echo の説明は、Python や Java などのプログラ...

MySQL 5.7 のインストールと設定のチュートリアル

この記事では、参考までにMySQLのインストールと設定のチュートリアルを紹介します。具体的な内容は次...

Linux システムで Centos7 を使って ElasticSearch ミドルウェアと共通インターフェースを構築するデモ

1. ミドルウェアの紹介1. 基本概念ElasticSearch は Lucene をベースにした検...

WeChatミニプログラム公式顔認証の詳しい説明

ミニプログラムはユーザーの個人情報を収集してアップロードしましたが、拒否されました。こんにちは、ミニ...

Windows Server 2008R2、2012、2016、2019 の違い

目次共通バージョンの紹介共通バージョンのダウンロードアドレスとインストール以下に簡単な違いを示します...

MySQLのkillがスレッドをkillできない理由

目次背景問題の説明原因分析シミュレーションする総括する背景日常の使用において、MySQL で個別また...

echarts ワードクラウドチャートを使用した Vue の実践記録

echartsワードクラウドはechartsの拡張版ですhttps://echarts.apache...

MySQL マスタースレーブレプリケーションの実践の詳細説明 - ログポイントに基づくレプリケーション

ログポイントベースのレプリケーション1. マスターデータベースとスレーブデータベースに専用のレプリケ...

MySQL バッチ追加および保存メソッドの例

ストレステストにログインする際には、多くの異なるユーザーが必要となり、データベースに新しいデータを追...

オンラインMySQLオプティマイザの誤判断によって発生した低速クエリイベントを記録する

序文:非常に遅いクエリとリクエストのタイムアウトのアラートを受け取りました。メトリックを通じて My...

MySql データベースのサブクエリと高度なアプリケーションの簡単な分析

MySql データベースのサブクエリ:サブクエリ: 選択クエリ ステートメント内に別の選択ステートメ...