検索
ホームページJava&#&チュートリアルDocker が SpringBoot をデプロイし、jar パッケージを置き換える方法

プロジェクト ディレクトリ

Docker が SpringBoot をデプロイし、jar パッケージを置き換える方法

dockerfile ファイル

後で使用する dockerfile ファイルを作成します。

ファイルのデプロイメント

サーバー上に新しい /data/docker/hellolearn フォルダーを作成し (ファイル パスはカスタマイズ可能)、Maven でパッケージ化された jar パッケージと上で作成した dockerfile ファイルを次の場所にコピーします。サーバー 新しいフォルダー (/data/docker/hellolearn) を作成します。

Docker が SpringBoot をデプロイし、jar パッケージを置き換える方法

イメージの生成

docker build -t hellolearn .

docker build -t イメージ名: label dockerfile相対位置。ドットは現在のディレクトリを表します。タグが書き込まれていない場合のデフォルトは、latest です。

Docker が SpringBoot をデプロイし、jar パッケージを置き換える方法

コンテナの開始

docker run -d -p 8301:8301 --name hellolearn hellolearn

docker start hellolearn

-d パラメーターを使用すると、コンテナーをバックグラウンドで実行できます。--name は指定したコンテナーの名前です。-p はポート マッピング用です。このとき、8301 (コロンの前のポート) ) サーバーのポートはコンテナにマッピングされます 8301 (コロンの後のポート) ポート (application.properties は 8301 で構成されます)

Access web

Docker が SpringBoot をデプロイし、jar パッケージを置き換える方法

#jar パッケージ マッピングのデプロイメント

上記の手順に従うだけで、springboot の docker デプロイメントのプロセス全体を簡単に処理できます。ただし、コンテナーを起動した後は、jar パッケージを更新する必要があるたびに、イメージを再作成し、その後コンテナーを再作成する必要があります。このプロセスは非常に面倒で非効率的です。では、イメージやコンテナを更新せずに、jar パッケージを直接更新してデプロイを完了するにはどうすればよいでしょうか?

5.1 dockerfile を更新します

最終行 エントリポイント ["java","-jar","/data/learn-web-0.0.1-snapshot.jar"] コンテナーの /data ディレクトリーにある learn-web-0.0.1-snapshot.jar ファイルが実行されます。

5.2 docker build コマンドを使用してイメージを構築します

docker build -t hellolearn .

5.3 コンテナーを作成して起動します

docker run --name hellolearn -it -v /data/docker/newhellolearn/package:/data -d -p 8301:8301 hellolearn

-v ホスト ディレクトリが関連付けられていますコンテナディレクトリと一緒に。このようにして、ホストの /data/docker/newhellolearn/package ディレクトリは docker の /data ディレクトリにマップされます。

この場合、jar パッケージが変更されたときに、ホストの /data/docker/newhellolearn/package ディレクトリ内の jar パッケージを直接更新できます。jar パッケージを更新した後、コンテナーを再起動する必要があります。

スクリプトのデプロイメント

jar パッケージのデプロイメント方法で問題が発生し、バージョン番号の変更など、jar パッケージ名が変更されると (learn-web-0.0.1-snapshot.jar--) > >learn-web-1.0.1-snapshot.jar)。何をする必要がありますか?スクリプトを使用した 3 番目の展開方法を以下に紹介します。

6.1 hellolearn.sh ファイルの作成

java -jar /data/learn-web-0.0.1-snapshot.jar

hellolearn を実行します。 sh は /data/docker/hellolearn/scriptdeploy/package にアップロードされます。このフォルダー パスはカスタマイズできます。このフォルダー パスは後で使用するため、覚えておいてください。

6.2 スクリプト実行権限の追加

chmod x hellolearn.sh

6.3 dockerfile の作成

cmd ["sh ","-c","/data/hellolearn.sh"] コンテナの起動時に、6.1 で作成された hellolearn.sh スクリプトが開始されることを示します。

上記の最後のコマンドは、entrypoint ですが、スクリプトのデプロイメントでは cmd に変更されていることに注意してください。entrypoint と cmd の具体的な違いに興味がある場合は、詳細を確認してください。

6.4 jar パッケージのアップロード

jar パッケージを hellolearn.sh と同じフォルダー ディレクトリ、つまり /data/docker/hellolearn/scriptdeploy/package に配置し、このディレクトリを追加しますコンテナー (ホスト ディレクトリ) を作成すると、コンテナーの /data ディレクトリにマップされます。 。

6.5 ファイル ディレクトリ構造図

Docker が SpringBoot をデプロイし、jar パッケージを置き換える方法

#ここでのディレクトリ構造について混乱しているかどうかはわかりませんが、私のディレクトリ構造図をアップロードします。ホストマシンが一目でわかるように。

6.6 イメージの作成

docker build -t hellolearn-script .

最後のドットは現在のディレクトリを表すため、次のコマンドを実行します。イメージを生成するには、dockerfile が配置されているディレクトリで実行する必要があります。

6.7 コンテナーの作成と開始

docker run --name hellolearn-script -it -v /data/docker/hellolearn/scriptdeploy/package:/data -d -p 8302 :8301 hellolearn-script

docker start hellolearn-script

ホストの /data/docker/hellolearn/scriptdeploy/package ディレクトリをコンテナの /data ディレクトリ マッピングに関連付けます。この場合、jar パッケージが変更されたときに、ホスト ディレクトリ内の jar パッケージを直接更新するだけです。 jar パッケージの名前が変更された場合でも、hellolearn.sh スクリプトを更新する必要があります。更新後にコンテナを再起動します。

6.8 Web テストの効果

Docker が SpringBoot をデプロイし、jar パッケージを置き換える方法

##docker ログの表示

docker ログ [オプション] コンテナー ID

オプションの説明:

-f: トレース ログ出力

--since: 特定の開始時刻のすべてのログを表示
-t: タイムスタンプを表示
-- tail:最新の n 個のコンテナー ログのみを一覧表示します

7.1 指定した時間以降のログを表示し、最後の 100 行のみを表示します:

docker logs -f -t --since ="2020-10-01" --tail=100 コンテナ ID

7.2 指定した期間のログを確認します

docker logs -t --since = "2020-10-01t19:00:00" -- "2020-10-01t19:00:00" コンテナ ID

7.3 指定した時間以降のログを表示します:

#docker logs -t --since="2020-10-01t19:00:00" コンテナー ID

7.4 過去 5 分間のログを表示します:

#docker logs --since 5mcontainer id

7.5 exec コマンドを使用して指定されたコンテナ上で bash を実行します:

docker exec hellolearn -it /bin/bash

または

docker exec -it hellolearn bash

7.6 docker ip

docker Inspection --format='{{.networksettings.ipaddress}}' hellolearn を表示する

発生した問題

問題の説明: デーモンからのエラー応答: ドライバーがエンドポイント flamboyant_leavitt での外部接続のプログラミングに失敗しました (iptables が失敗しました: iptables --wait -t nat -a docker -p tcp -d 0/0 --dport 8301 -j dnat --to-destination 172.17.0.2:8301 ! -i docker0: iptables: nochain/target/match by that name.

解決策: docker を再起動します。

systemctl 再起動ドッカー

以上がDocker が SpringBoot をデプロイし、jar パッケージを置き換える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は亿速云で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Javaがクロスプラットフォームデスクトップアプリケーションを開発するための人気のある選択肢なのはなぜですか?Javaがクロスプラットフォームデスクトップアプリケーションを開発するための人気のある選択肢なのはなぜですか?Apr 25, 2025 am 12:23 AM

javaispopularforsoss-platformdesktopapplicationsduetoits "writeonce、runaynay" philosophy.1)itusesbytecodatiTatrunnanyjvm-adipplatform.2)ライブラリリケンディンガンドジャヴァフククレアティック - ルルクリス

Javaでプラットフォーム固有のコードを作成する必要がある場合がある状況について話し合います。Javaでプラットフォーム固有のコードを作成する必要がある場合がある状況について話し合います。Apr 25, 2025 am 12:22 AM

Javaでプラットフォーム固有のコードを作成する理由には、特定のオペレーティングシステム機能へのアクセス、特定のハードウェアとの対話、パフォーマンスの最適化が含まれます。 1)JNAまたはJNIを使​​用して、Windowsレジストリにアクセスします。 2)JNIを介してLinux固有のハードウェアドライバーと対話します。 3)金属を使用して、JNIを介してMacOSのゲームパフォーマンスを最適化します。それにもかかわらず、プラットフォーム固有のコードを書くことは、コードの移植性に影響を与え、複雑さを高め、パフォーマンスのオーバーヘッドとセキュリティのリスクをもたらす可能性があります。

プラットフォームの独立性に関連するJava開発の将来の傾向は何ですか?プラットフォームの独立性に関連するJava開発の将来の傾向は何ですか?Apr 25, 2025 am 12:12 AM

Javaは、クラウドネイティブアプリケーション、マルチプラットフォームの展開、および言語間の相互運用性を通じて、プラットフォームの独立性をさらに強化します。 1)クラウドネイティブアプリケーションは、GraalvmとQuarkusを使用してスタートアップ速度を向上させます。 2)Javaは、埋め込みデバイス、モバイルデバイス、量子コンピューターに拡張されます。 3)Graalvmを通じて、JavaはPythonやJavaScriptなどの言語とシームレスに統合して、言語間の相互運用性を高めます。

Javaの強力なタイピングは、プラットフォームの独立性にどのように貢献しますか?Javaの強力なタイピングは、プラットフォームの独立性にどのように貢献しますか?Apr 25, 2025 am 12:11 AM

Javaの強力なタイプ化されたシステムは、タイプの安全性、統一タイプの変換、多型を通じてプラットフォームの独立性を保証します。 1)タイプの安全性は、コンパイル時間でタイプチェックを実行して、ランタイムエラーを回避します。 2)統一された型変換ルールは、すべてのプラットフォームで一貫しています。 3)多型とインターフェイスメカニズムにより、コードはさまざまなプラットフォームで一貫して動作します。

Javaネイティブインターフェイス(JNI)がプラットフォームの独立性をどのように妥協できるかを説明します。Javaネイティブインターフェイス(JNI)がプラットフォームの独立性をどのように妥協できるかを説明します。Apr 25, 2025 am 12:07 AM

JNIはJavaのプラットフォームの独立を破壊します。 1)JNIは特定のプラットフォームにローカルライブラリを必要とします。2)ローカルコードをターゲットプラットフォームにコンパイルおよびリンクする必要があります。3)異なるバージョンのオペレーティングシステムまたはJVMは、異なるローカルライブラリバージョンを必要とする場合があります。

Javaのプラットフォームの独立性を脅かしたり強化したりする新しいテクノロジーはありますか?Javaのプラットフォームの独立性を脅かしたり強化したりする新しいテクノロジーはありますか?Apr 24, 2025 am 12:11 AM

新しいテクノロジーは、両方の脅威をもたらし、Javaのプラットフォームの独立性を高めます。 1)Dockerなどのクラウドコンピューティングとコンテナ化テクノロジーは、Javaのプラットフォームの独立性を強化しますが、さまざまなクラウド環境に適応するために最適化する必要があります。 2)WebAssemblyは、Graalvmを介してJavaコードをコンパイルし、プラットフォームの独立性を拡張しますが、パフォーマンスのために他の言語と競合する必要があります。

JVMのさまざまな実装は何ですか、そしてそれらはすべて同じレベルのプラットフォームの独立性を提供しますか?JVMのさまざまな実装は何ですか、そしてそれらはすべて同じレベルのプラットフォームの独立性を提供しますか?Apr 24, 2025 am 12:10 AM

JVMの実装が異なると、プラットフォームの独立性が得られますが、パフォーマンスはわずかに異なります。 1。OracleHotspotとOpenJDKJVMは、プラットフォームの独立性で同様に機能しますが、OpenJDKは追加の構成が必要になる場合があります。 2。IBMJ9JVMは、特定のオペレーティングシステムで最適化を実行します。 3. Graalvmは複数の言語をサポートし、追加の構成が必要です。 4。AzulzingJVMには、特定のプラットフォーム調整が必要です。

プラットフォームの独立性は、開発コストと時間をどのように削減しますか?プラットフォームの独立性は、開発コストと時間をどのように削減しますか?Apr 24, 2025 am 12:08 AM

プラットフォームの独立性により、開発コストが削減され、複数のオペレーティングシステムで同じコードセットを実行することで開発時間を短縮します。具体的には、次のように表示されます。1。開発時間を短縮すると、1セットのコードのみが必要です。 2。メンテナンスコストを削減し、テストプロセスを統合します。 3.展開プロセスを簡素化するための迅速な反復とチームコラボレーション。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません