docker を使用して centos (jsp) に war パッケージ プロジェクトをデプロイすることについての簡単な説明


はじめに:
簡単に言うと、今回は初めての気まぐれ記事です 私が実際に遭遇した問題を解いて思ったことを記録しています 要約が不十分な場合は、アドバイスをいただければ幸いです!

1. 環境整備

今回用意したのは、centos7 仮想ミラー環境(VMware)、shell5 接続ツール(ファイル転送に使用)、Navicat15(データベース可視化ツール)です。

リンク: https://pan.baidu.com/s/1s6yRXsWtbvxsg164Cir-bg
抽出コード: 6666

ここでは特に何も書きませんが、準備ができたら、docker について少し説明しましょう。

2. Dockerの利点

1. 手続きの簡素化

Docker を使用すると、開発者はアプリケーションと依存関係をポータブル コンテナにパッケージ化し、一般的な Linux マシンに公開して仮想化を実現できます。Docker は仮想化の方法を変更し、開発者が結果を Docker に直接入力して管理できるようにしました。利便性とスピードはすでに Docker の最大の利点であり、以前は数日、場合によっては数週間かかっていたタスクも、Docker コンテナーの処理によりわずか数秒で完了できます。

2. 選択恐怖症を避ける

選択恐怖症がある場合は、ベテランの患者になってください。Docker は問題をパッケージ化するのに役立ちます。たとえば、Docker イメージ。Docker イメージには実行環境と構成が含まれているため、Docker は複数のアプリケーション インスタンスのデプロイを簡素化できます。たとえば、Web アプリケーション、バックグラウンド アプリケーション、データベース アプリケーション、Hadoop クラスターなどのビッグ データ アプリケーション、メッセージ キューなどをミラーにパッケージ化して展開できます。

3. お金を節約する

一方で、クラウド コンピューティング時代の到来により、開発者は結果を追求するために高価なハードウェアを構成する必要から解放され、Docker によって、高パフォーマンスは高価格でなければならないという考え方が変わりました。Docker とクラウドを組み合わせることで、クラウド スペースをより完全に活用できるようになります。これはハードウェア管理の問題を解決するだけでなく、仮想化の方法も変えます。

3. Docker の構造

Docker デーモン (Docker デーモン)

Docker デーモンは、ホスト (DOCKER-HOST) 上で実行されるバックグラウンド プロセスです。Docker クライアント経由で通信できます。

1.クライアント(Dockerクライアント)

Docker クライアントは Docker のユーザー インターフェイスであり、ユーザー コマンドと構成識別子を受け入れ、Docker デーモンと通信できます。図中の docker build などはすべて Docker 関連のコマンドです。

2.イメージ(Dockerイメージ)

Docker イメージは、Docker コンテナーを作成するための手順を含む読み取り専用のテンプレートです。これはシステム インストール CD に似ており、システム インストール CD を使用してシステムをインストールでき、同様に、Docker イメージを使用して Docker イメージ内のプログラムを実行できます。

3.コンテナ(容器)

コンテナーは、イメージの実行可能なインスタンスです。イメージとコンテナの関係は、オブジェクト指向テクノロジにおけるクラスとオブジェクトの関係に似ています。コンテナーは、Docker API または CLI コマンドを使用して開始、停止、移動、削除できます。

4.レジストリ

Docker Registry は、イメージを一元的に保存および配布するサービスです。Docker イメージを構築したら、現在のホストで実行できます。ただし、このイメージを他のマシンで実行する場合は、手動でコピーする必要があります。現時点では、Docker Registry を使用して、イメージの手動コピーを回避できます。

Docker レジストリには複数の Docker リポジトリを含めることができ、各リポジトリには複数のイメージ タグを含めることができ、各タグは Docker イメージに対応します。これは Maven のウェアハウスに似ており、Docker Registry を Maven ウェアハウスと比較すると、Docker ウェアハウスは特定の jar パッケージのパスとして理解でき、イメージ ラベルは jar パッケージのバージョン番号として理解できます。

4. Docker と仮想マシンの比較

軽量の仮想化手法である Docker には、アプリケーションの実行において従来の仮想マシンに比べて大きな利点があります。

Docker コンテナは非常に高速で、数秒で起動および停止できます。これは、従来の仮想マシン方式よりもはるかに高速です。

Docker コンテナはシステム リソースをほとんど必要とせず、1 つのホスト上で数千の Docker コンテナを同時に実行できます。

Docker を使用すると、ユーザーは Git に似た操作を通じてアプリケーション イメージの取得、配布、更新を容易に行うことができ、手順が簡単で学習コストも低くなります。

Docker は、Dockerfile 構成ファイルを通じて柔軟な自動作成およびデプロイのメカニズムをサポートし、作業効率を向上させます。

5.Dockerのインストール

Docker はオープンソースの商用製品で、Community Edition (CE) と Enterprise Edition (EE) の 2 つのバージョンがあります。エンタープライズ バージョンには、通常、個人の開発者は利用できない一部の有料サービスが含まれています。

Docker では、CentOS システムのカーネル バージョンが少なくとも 3.10 である必要があります。このページの前提条件を確認して、CentOS バージョンが Docker をサポートしているかどうかを確認してください。

ボスの詳細リンクに直接アクセスしてください: (私が話したい点は、以下の戦争パッケージの展開です)

https://cloud.tencent.com/developer/article/1701451

6. Tomcat イメージをダウンロードする

  • docker version //docker が正常にインストールされているかどうかを確認する

docker バージョン バージョン情報の表示

  • systemctl start docker // docker サービスを開始します
    ここに画像の説明を挿入します

  • docker pull tomcat //デフォルトでは最新のイメージがプルされてダウンロードされます
    -docker pull tomcat:8.5.38-jre8 //特定のバージョンを指定することもできます
    ここに画像の説明を挿入します
    ダウンロードが完了したら、イメージが正常にダウンロードされたかどうかを確認します。

  • docker イメージ // インストールされているすべてのイメージを表示
    ここに画像の説明を挿入します

  • docker run -p 8080:8080 -d --name tomcat tomcat

  • ここに画像の説明を挿入します

  • -p 8080:8080 はホスト ポート: コンテナ ポートに対応します。

  • –name tomcat1 tomcat1 という名前

  • tomcat:8.5.38-jre8 で使用されるイメージ ファイル名

  • docker ps //実行中のコンテナを表示します。
    ここに画像の説明を挿入します
    空の場合は、実行中のコンテナがないことを意味します。

  • docker ps -a //実行中のコンテナと実行されていないコンテナを含めます
    ここに画像の説明を挿入します

  • docker start tomcat1 //コンテナ名、またはコンテナの前の ID で起動します。この方法は、コンテナ ID をコンテナ名 tomcat1 に置き換えることです -docker
    ここに画像の説明を挿入します
    psは
    ここに画像の説明を挿入します
    正常に起動します
    。また、このコンテナが次の場所で自動的に起動するように設定することもできます。起動し
    、起動時に –restart= を追加します。

  • docker run -itd --name tocmat1 -p 8080:8080 --restart=always tomcat:8.5.38-jre8

  • 注: この方法は、新しい Tomcat コンテナを再作成する方法です。同じ名前のコンテナが既に存在する場合、エラーが報告されます。既に Tomcat コンテナが作成されている場合は、次の方法を使用します。

  • always //コンテナが停止しているか、Dockerが停止/再起動されている場合にのみコンテナを再起動します

プロジェクトが開始されている場合

  • docker update --restart=always tomcat1 //最後の tomcat1 はコンテナ名であり、コンテナ ID に置き換えることもできます。Tomcat
    ここに画像の説明を挿入します
    コンテナを生成する別の方法もあります。
  • docker run -itd --name tomcat2 --restart=always -p 8081:8080 -v /root/宿題/tomcat/webapps:/usr/local/tomcat/webapps tomcat:8.5.38-jre8
    ここに画像の説明を挿入します
  • -v マウント ファイルは、コンテナ内のフォルダーをカスタマイズされたファイルにマップします。そうでない場合は、自動的に生成されます。
  • /root/宿題/tomcat/webapps は物理マシンのファイル アドレスです。
  • :/usr/local/tomcat/webapps は、tomcat2 コンテナの内部ファイルの場所です。
  • ホストの 8080 ポートがコンテナ tomcat1 に割り当てられているため、ここでは 8081:8080 が使用されています。ここでは tomcat1 を削除していません。ポートは占有されているため、他の空いているポートに割り当てるか、使用を停止することしかできません。 tomcat1 コンテナの 8080 ポートをホストの 8080 ポートにマッピングすることもできます。
    ここに画像の説明を挿入します
  • ここで問題があり、Tomcat コンテナの webapps ファイルがホストにマウントされている場合、アクセス ip: ポートが表示されません。マウントされていない場合は表示されますが、影響はありません。戦争パッケージの展開。
  • webapps ファイルがマウントされた Tomcat コンテナ:
    ここに画像の説明を挿入しますファイルがマウントされていない Tomcat コンテナ:
    ここに画像の説明を挿入します

7. MYSQLミラーのダウンロード

  • docker mysql //デフォルトで最新のイメージをプルします

  • ここでは 5.7.19 をインストールしましたが、それ以降のバージョン番号は必要に応じて変更できます。
    ここに画像の説明を挿入します

  • docker run --name mysql:5.7.19 -p 13306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql_5.7.19 --character-set-server=utf8mb4 --collat​​ion-server=utf8mb4_unicode_ci
    ここに画像の説明を挿入します

  • –name コンテナ名

  • -p 13306:3306 物理マシン ポート: コンテナ内部ポート

  • -e 実行パラメータは、root ユーザーのパスワードを初期化します。

  • -d は、mysql:5.7.19 をバックグラウンドで実行し、ダウンロードしたイメージ名にラベルを追加します。

  • –character-set-server=utf8mb4: MySQL サーバーのデフォルトのエンコーディングを utf8mb4 に設定します。

  • –collat​​ion-server=utf8mb4_unicode_ci: MySQL サーバーのデフォルトの照合順序を utf8mb4_unicode_ci に設定します。

  • docker ps //コンテナが正常に起動するか確認するここに画像の説明を挿入します

  • docker update --restart=always mysql_5.7.19 //mysql-5.7.19 コンテナを自己起動に設定します
    ここに画像の説明を挿入します

8. 戦争パッケージの展開

  • 開発ツール (ここでは Eclipse) を開き、正常に実行できる Java プロジェクトを war にパッケージ化します (ここでは JSP プロジェクト)
    ここに画像の説明を挿入しますここに画像の説明を挿入します
  • この時点で、ストレージ用に選択したパスに追加の war パッケージがあることがわかります。
    ここに画像の説明を挿入します
  • データベース グラフィカル ツール Navicat を使用してデータベースに接続する
  • このプロジェクトに関連するデータベースをエクスポートします
    ここに画像の説明を挿入しますここに画像の説明を挿入します
  • 次に、ストレージ パスに移動して SQL ファイルを確認できます。
    ここに画像の説明を挿入します
  • 新しい mysql データベース接続を作成する
    ここに画像の説明を挿入します
  • データベースを開いて作成し、新しいクエリを作成します。
    ここに画像の説明を挿入します
    データベース接続を再度開くと、データベースが作成されたことがわかります。
    ここに画像の説明を挿入します
  • ダブルクリックしてデータベースを開き、右クリックして SQL ファイルを実行し、保存した SQL ファイルを見つけます。
    ここに画像の説明を挿入しますここに画像の説明を挿入します
  • 正常にインポートされました
    ここに画像の説明を挿入します
  • テーブルを更新して開いてデータを確認します
    ここに画像の説明を挿入します
  • このとき、dockerのmysqlコンテナにデータが存在するかを確認します。
  • docker exec -it mysql_5.7.19 /bin/bash
  • -i -t は -it と同等で、挿入、入力を意味します。/bin/bash はシェル スクリプトの対話型インターフェイスを意味します
    ここに画像の説明を挿入します
  • mysql -uroot -proot // -p の後ろの root は、前に設定された root パスワードです
    ここに画像の説明を挿入します
  • show Databases; //すべてのデータベースを表示
    ここに画像の説明を挿入します
  • データベースを選択し、現在のデータベースのすべてのテーブルを表示します
    ここに画像の説明を挿入します
  • データ転送は成功しました。war パッケージのアップロードを開始してください。
  • xshell が接続されているコマンド ウィンドウに sz と入力し、Enter キーを押して、保存した war パッケージを見つけて転送します。
  • 転送が完了したら、「ls」と入力して現在のディレクトリ内のファイルを表示します。ここに画像の説明を挿入します
  • ここで使用するコンテナは、tomcat2 の webapps ファイルをホスト ファイルにマウントするため、マウントされたフォルダーに war パッケージをコピーするだけで済みます。
  • cp PersonManager.war 宿題/tomcat/webapps/
    ここに画像の説明を挿入します
  • マウントされたフォルダーを入力してファイルを表示します
    ここに画像の説明を挿入します
  • tomcat2 コンテナを再起動します
    -docker restart tomcat2 //tomcat2 が起動している場合は restart を使用し、そうでない場合は start を使用します。
    ここに画像の説明を挿入します
  • マウントされたディレクトリに移動して、war が解析されたかどうかを確認します。
    ここに画像の説明を挿入します
    解析されました。ブラウザに移動し、ip:port/プロジェクト名を使用してここに画像の説明を挿入します**にアクセスします

!!! ここで特に注意すべき点は、Linux システムでは大文字と小文字が区別されるが、Windows システムでは大文字と小文字が区別されないということです。

**

こちらからログインしましたが、ログインできないことが分かりました。
ここに画像の説明を挿入します

  • しかし、アカウントとパスワードは間違っていません。最終的に情報を確認し、専門家にアドバイスを求め、最終的に解決しました。皆さんもここに注意してください。
  • データベースに接続するプロジェクトの構成ファイルを見つけます。構成ファイル名にスペースを入れた vi または vim を使用します。
    ここに画像の説明を挿入します
  • 先頭の localhost は mysql コンテナの IP である必要があり、ポートはコンテナのポート 3306 であり、後ろのデータベース名は大文字と小文字に注意する必要があります。データベースはすべて小文字であるため、変更する必要がありますここでは小文字にします。
  • docker Inspection mysql コンテナ名 // まず mysql コンテナの内部 IP を確認します
  • docker Inspection mysql_5.7.19
    ここに画像の説明を挿入します
  • 正しい構成は次のとおりです
    ここに画像の説明を挿入します
  • docker restart tomcat2 //tomcat コンテナを再起動します
    ここに画像の説明を挿入します
  • プロジェクトにアクセスして
    ここに画像の説明を挿入します、正常にログインしてください。

おすすめ

転載: blog.csdn.net/qq_43913213/article/details/123431625