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

推薦する

MySQL の主キーがクエリを高速化するために数値を使用するか UUID を使用するかについての簡単な分析

実際の開発では、MySQL の主キーは重複できず、主キーが自動的にインクリメントされることがあります...

MySQL 8.0.20でNavicatをインストールして接続する方法と注意すべき点

注意事項1. まず、mysql インストール ディレクトリに次の内容の my.ini ファイルを作成...

Nginx でバージョン番号を隠す方法

Nginx はバージョン番号を非表示にする実稼働環境では、セキュリティ上の脆弱性の漏洩を避けるために...

この記事では、イベント委任を使用してJavaScriptメッセージボード機能を実装する方法について説明します。

イベント委任を使用してメッセージ ボード機能を実装します。 <!DOCTYPE html>...

MySQL 8.0 でリモートアクセス権限を設定する方法

前回の記事では、MySQL パスワードをリセットする方法を説明しました。一部の学生から、データベース...

CentOS で MySQL を完全にアンインストールする方法

この記事では、CentOSでのMySQLの完全アンインストールについて記録しています。具体的な内容は...

MySQL データベース JDBC プログラミング (Java は MySQL に接続します)

目次1. データベースプログラミングの基本条件2. Java でのデータベースプログラミング: JD...

hasLayout によって発生する CSS バグの一覧

IE には長い間問題がありました。誰もがテストを受けたとき、誰もが笑顔でしたが、それはただのニヤニヤ...

Web開発でボックスを中央に配置するいくつかの方法

1. ボックスを中央に配置するいくつかの方法を記録します。 1.0、マージン幅固定、高さ中央配置。 ...

ネイティブ js でカスタム スクロール バーを実装する

この記事の例では、カスタムスクロールバーを実装するためのjsの具体的なコードを参考までに共有していま...

ルートパスワードを変更するための MySQL 設定、MySQL サーバー接続、MySQL 共通コマンド図

1. ルートパスワードの設定と変更mysql が起動しているかどうかを確認します。起動していない場合...

バッテリー残量が少なくなったときに Linux を自動シャットダウンする方法

序文最近、私の住居の電力事情が不安定で、突然の停電が頻繁に起こります。ノートパソコンを持っているので...

MySQL のフィールドに一意のインデックスを追加および削除する方法

1. PRIMARY KEY(主キーインデックス)を追加するmysql>ALTER TABLE...

MySQL スロークエリログの有効化と設定

導入MySQL スロー クエリ ログは、問題のある SQL ステートメントのトラブルシューティングや...

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

この記事では、参考までにMySQL 5.7.13 winx64のインストールと設定方法のグラフィック...