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 入門チュートリアル: テキストの書式設定と特殊文字

推薦する

Centos7でのSambaサーバー構成(実戦)

サンバの概要Samba は、Linux および UNIX システム上で SMB プロトコルを実装する...

Linux でファイル権限を変更する chmod コマンドの詳細な分析

Linux chmodコマンドを使用して、ターゲット ファイルにアクセス、読み取り、書き込み、または...

開発にVscodeとdockerを組み合わせて使用​​する詳細なプロセス

序文Docker と VS Code を使用すると、ローカル開発環境全体を最適化し、プロジェクトの進...

MySQL 5.5 で範囲パーティションを追加および削除する例

導入RANGE パーティション分割は、指定された連続した間隔範囲に基づいています。RANGE の初期...

node.js でマルチコア CPU を最大限に活用する方法

目次概要node.js でマルチコア CPU を最大限に活用する方法Node で子プロセスを作成する...

jQueryはアコーディオン効果を実装します

この記事では、アコーディオンを実装するためのjQueryの具体的なコードを参考までに紹介します。具体...

MySQL の単一テーブル クエリ操作例の詳細な説明 [構文、制約、グループ化、集計、フィルタリング、並べ替えなど]

この記事では、MySQL の単一テーブル クエリ操作について説明します。ご参考までに、詳細は以下の通...

MySql データ型チュートリアル例の詳細な説明

目次1. 概要2. MySQLデータ型の詳細な説明1) 文字列型2) 整数型3) 浮動小数点型4) ...

MySQL 8.0.11 の新機能の紹介

MySQL 8.0 for Windows v8.0.11 公式無料バージョン 64 ビット1. デ...

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

1. MySQL 5.7.11 zipインストールパッケージをダウンロードするこのマシンはwin7 ...

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

MySQL 5.7.17 のインストールと設定方法の概要最初のステップは、MySQL公式サイトから...

MySQLクエリの基本的なクエリ操作の学習

序文MySQL は最も人気のあるリレーショナル データベース管理システムです。WEB アプリケーショ...

React 関数コンポーネントのパフォーマンス最適化のアイデアの詳細な説明

最適化のアイデア最適化には主に 2 つの方向があります。再レンダリングの回数を減らします。 Reac...

Navicat を使用して MySQL データベースをエクスポートおよびインポートする方法

MySql は、私たちが頻繁に使用するデータ ソースです。開発者が練習、小規模なプライベート ゲーム...