Docker を使用した war パッケージ プロジェクトのデプロイの実装

Docker を使用した war パッケージ プロジェクトのデプロイの実装

Docker で war をデプロイするには、コンテナを使用する必要があります。ここでは tomcact コンテナを使用します。実際には、war パッケージを tomcat の webapps ディレクトリにドロップするだけです。tomcat が起動すると、war パッケージが自動的に解凍されます。

1 つは、Tomcat コンテナ イメージを Docker にインストールし、Tomcat イメージの下の Web アプリに war パッケージをドロップすることです。ただし、Tomcat が閉じられている場合、その Web アプリケーションの下のパッケージは消えます。2 つ目はマウントを使用して、Tomcat コンテナーのイメージをインストールしますが、WAR パッケージを Tomcat の下の Web アプリケーションにドロップせず、外部フォルダーを直接作成し、この外部フォルダーを WABAPPS に関連付けます。これにより、新しく作成されたフォルダーに WAR をドロップすると、Tomcat の Web アプリケーションもマウントされている WAR パッケージを読み取ることができます。

1. tomcatイメージをインストールして起動する

1. docker が起動状態にあることを前提として、docker の下で tomcat イメージを検索します。ここでは、docker を起動する方法と、自動的に起動するように設定する方法については説明しません。

docker 検索 tomcat 

2. 名前でdockerをダウンロードします。docker pull docker.io/tomcat

3. Tomcatを起動する

 docker run -d -p 8088:8080 docker.io/tomcat

-d はバックグラウンドで実行することを意味し、 -p はポート マッピングを意味し、前面の 8088 は外部アクセス ポート (つまり、ローカル IP によって外部に開かれるポート)、背面の 8080 は Docker コンテナー内のポートです。

4. Tomcatが起動しているかどうかを確認します

3. SpringbootプロジェクトをWarパッケージプロジェクトに変換する

私は springboot を使い慣れているので、war パッケージ プロジェクトを作成するのは面倒です。そこで、新しい springboot プロジェクトを作成し、それを war プロジェクトに変更しました。すでに war パッケージ プロジェクトがある場合は、この手順を無視できます。

1. SpringBootプロジェクトを作成します。これについてはここでは説明しません。必要な場合は、別のブログ「SpringBootを簡単に作成して使用する」をお読みください。

2. pom.xmlファイルを変更する

2.1 jarをwarに変更する

2.2 組み込みWebモジュールのTomcatを削除する

2.3 サーブレットの依存関係を追加します。そうしないと、パッケージングでエラーが報告されます。

<依存関係>
  <groupId>javax.servlet</groupId>
	<artifactId>javax.servlet-api</artifactId>
	<バージョン>3.1.0</バージョン>
</依存関係>

2.4 プロジェクトにエイリアスを追加します。ビルド タグの下に、プロジェクト名である finalName を追加します。追加しない場合、プロジェクト名はアーティファクト ID バージョンになり、生成される war パッケージ名もアーティファクト ID バージョン.war になります。ブラウザーでアクセスすると、プロジェクト名が長くなりすぎます。このステップは個人の好みによって異なります

3. スタートアップクラスを変更します。スタートアップクラスはSpringBootServletInitializerを継承します。

4. tomcatコンテナのwebappsの下にwarパッケージを配置し、warパッケージを起動します。

1. アップロードしたwarパッケージを保存するフォルダを作成します。ルートディレクトリに配置します。

mkdir warPackageを実行し、ファイルをこのディレクトリに転送します。

2. warパッケージをTomcatコンテナのwebappsディレクトリにコピーします。

2.1. 実行中のTomcatコンテナのコンテナIDを確認し、docker psを実行する必要があります。

2.2. tomcat コンテナの webapps ディレクトリに war パッケージをコピーします。コマンドの形式は次のとおりです: docker cp xxx.war パッケージ パス コンテナ ID:/コピー先のディレクトリ パス

docker cp /warPackage/dockerProject.war e591e16899c6:/usr/local/tomcat/webapps

2.3. コピーされているかどうかを確認する

dockerでtomcatコンテナに入ります: docker exec -it e591e16899c6 /bin/bash

コンテナを終了する: exit

3. コンテナを再起動します: docker restart + コンテナID

4. ブラウザのアクセス パスは次のとおりです: アクセスしたポート: プロジェクト名/インターフェース名。私のプロジェクト名は dockerProject です。Docker は私が作成したシンプルなコントローラーです。

5. マウントディレクトリを使用してwarパッケージを起動します。

マウントとは、サーバー上に別のディレクトリを作成し、それをTomcatの下のWebアプリケーションのパスにマップして、Tomcatが外部フォルダ内のファイルを読み取ることができるようにすることである。

1. 手間を省くために、上で作成した/warPackageフォルダを直接使用します。

2. ディレクトリをマウントし、Tomcatコンテナを実行して、自動的に再起動するように設定します: --restart=always

docker run -d -p 8088:8080 -v /warPackage/:/usr/local/tomcat/webapps --restart=always docker.io/tomcat

次に、tomcatディレクトリに入ると、すでにwebappsの下にあることがわかります。

3. ブラウザアクセス

Docker を使用して war パッケージ プロジェクトをデプロイする方法についての記事はこれで終わりです。 war パッケージの Docker デプロイに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。 今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker を使用してスタンドアロン Pulsar とクラスター化された Redis をデプロイする方法 (開発アーティファクト)
  • アイデアをDockerに接続してワンクリックでデプロイする方法
  • Dockerを使用してMySQL 8.0をデプロイする方法の例
  • Docker を使用した ELK7.3.0 ログ収集サービスの導入に関するベスト プラクティス
  • Docker で onlyoffice をインストールして展開する詳細なプロセス

<<:  JavaScript のよりエレガントなエラー処理方法 async await

>>:  MySQL alter ignore構文の詳細な説明

推薦する

MySQL が UNION を使用して 2 つのクエリを接続できない理由の詳細な説明

概要連合接続データセットキーワードは、2つのクエリ結果セットを1つに連結し、同一のレコードを除外する...

Linux ログ内のキーワードとその前後の情報を検索する方法の例

日常業務では、ログを表示する必要がよくあります。たとえば、 tail コマンドを使用してログをリアル...

Grafana+Prometheus を使用して MySQL サービスのパフォーマンスを監視する

Prometheus (プロメテウスとも呼ばれる) 公式サイト: https://prometheu...

JS でオブジェクト プロパティを簡単にトラバースするいくつかの方法

目次1. 自己列挙可能なプロパティ2. Object.values()はプロパティ値を返します3. ...

Dockerコンテナを停止または強制終了できない問題の解決策

Docker バージョン 1.13.1問題プロセス特定の環境のMySQLコンテナを停止、強制終了、ま...

zabbix 4.04 の詳細なインストール チュートリアル (CentOS 7.6 ベース)

1. インストール前の準備: 1.1 JDKをインストールするopenjdkをアンインストールする...

InnoDB の主な機能 - 挿入キャッシュ、2 度書き込み、適応ハッシュ インデックスの詳細

InnoDB ストレージ エンジンの主な機能には、挿入バッファ、二重書き込み、適応ハッシュインデック...

Dockerはプロセス操作を管理するためにSupervisorを使用する

Docker コンテナは、起動時に、たとえば ssh または apache デーモン サービスなどの...

DOCTYPE宣言の機能と使い方の詳しい説明

1. ブラウザのレンダリングモードとdoctype一部の Web ページは標準に従って作成されていま...

あなたが知らない Linux KDE アプリケーション 11 選

翻訳Kool Desktop Environment の略称。 Linux、Unix、FreeBSD...

VUE無限レベルツリーデータ構造表示の実装

目次コンポーネントの再帰呼び出しレンダリングメソッドの使用プロジェクトに取り組んでいると、左側のメニ...

Linux での MySQL 5.7.17 の最新安定バージョンのインストール チュートリアル

ソースコードを通じて Linux に最新の安定バージョンの MySQL をインストールします: my...

ウェブページの右下隅に「いいね!」カード効果を実現するための CSS (サンプルコード)

効果 HTML を実装するには、まずクリーンな HTML ページを準備し、ノードを記述します。 &l...

MySQL で CURRENT_TIMESTAMP を使用する方法

目次CURRENT_TIMESTAMPの使用CURRENT_TIMESTAMPを使用したタイムスタン...

MySQL の NOT IN 充填ピットの NULL 列の問題の解決方法

以前、会社で小さな機能に取り組んでいたとき、特定の状況でデータがいくつあるかを数えてから問題を修正し...