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

推薦する

Reactにおける不変値の説明

目次不変の値とは何ですか?不変の値を使用するのはなぜですか? Reactのパフォーマンス最適化は不変...

WeChatミニプログラムの開発をスピードアップするためのヒント

1. app.jsonを使用してページを作成する私たちの通常の開発習慣によれば、新しいページを作成す...

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

この記事では、MySQL 8.0のインストールと設定方法を参考までに紹介します。具体的な内容は以下の...

HTML/CSSにおける記号論の詳細な説明

この記事では、ソシュールの言語哲学などの理論に基づいて、CSS の class 属性は不要であると主...

Linux DHCPサービスの詳細な説明

目次1. DHCP サービス (動的ホスト構成プロトコル) 1. 背景2. 概要3. 利点4.DHC...

Ubuntu 18.04 に vsftpd をインストールするための実装コード

vsftpdをインストールする $ sudo apt-get install vsftpd -y v...

Vue は Ctrip のカルーセル効果を模倣します (スライディング カルーセル、以下は高度に適応)

まずケースを見てみましょう。vue+swiper を使用して実装します。スライドの高さが異なる場合、...

JavaScript が Jingdong のカルーセル効果を模倣

この記事では、JD.comのカルーセル効果の表示を実現するためのJavaScriptの具体的なコード...

Nginx+FastDFSでイメージサーバーを構築

設置環境セントス環境依存性: yum -y gccをインストールします yum インストール -y ...

「fsck」を使用して Linux のファイルシステムエラーを修正する方法

序文ファイル システムは、データの保存方法と復元方法を整理する役割を担います。 いずれにせよ、時間の...

4種類のMySQL接続とマルチテーブルクエリの詳細な説明

目次MySQL 内部結合、左結合、右結合、外部結合、複数テーブルクエリビルド環境: 1. 内なる慈恩...

MySql テーブル、データベース、シャーディング、パーティショニングの知識の詳細な説明

1. はじめにデータベース内のデータ量が一定レベルに達すると、システムパフォーマンスのボトルネックを...

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

この文書はMySQL Server 8.0.3のインストールと設定方法を参考のために記録したものです...

Linux でユーザー アカウントをロックおよびロック解除する 3 つの方法

組織内で何らかのパスワード ポリシーがすでに実装されている場合は、この記事を読む必要はありません。た...

ウェブサイトのフッター沈下現象に対する3つの解決策を詳しく解説

背景多くのウェブサイトのデザインは、一般的にコンテンツ+フッターの2つの部分で構成されています。コン...