プロジェクト ディレクトリ
dockerfile ファイル
後で使用する dockerfile ファイルを作成します。
ファイルのデプロイメント
サーバー上に新しい /data/docker/hellolearn フォルダーを作成し (ファイル パスはカスタマイズ可能)、Maven でパッケージ化された jar パッケージと上で作成した dockerfile ファイルを次の場所にコピーします。サーバー 新しいフォルダー (/data/docker/hellolearn) を作成します。
イメージの生成
docker build -t hellolearn .
docker build -t イメージ名: label dockerfile相対位置。ドットは現在のディレクトリを表します。タグが書き込まれていない場合のデフォルトは、latest です。
コンテナの開始
docker run -d -p 8301:8301 --name hellolearn hellolearn
docker start hellolearn
-d パラメーターを使用すると、コンテナーをバックグラウンドで実行できます。--name は指定したコンテナーの名前です。-p はポート マッピング用です。このとき、8301 (コロンの前のポート) ) サーバーのポートはコンテナにマッピングされます 8301 (コロンの後のポート) ポート (application.properties は 8301 で構成されます)
Access web
#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 ファイル ディレクトリ構造図
#ここでのディレクトリ構造について混乱しているかどうかはわかりませんが、私のディレクトリ構造図をアップロードします。ホストマシンが一目でわかるように。
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 ログ [オプション] コンテナー IDオプションの説明:
-f: トレース ログ出力7.1 指定した時間以降のログを表示し、最後の 100 行のみを表示します:--since: 特定の開始時刻のすべてのログを表示
-t: タイムスタンプを表示
-- tail:最新の n 個のコンテナー ログのみを一覧表示します
docker logs -f -t --since ="2020-10-01" --tail=100 コンテナ ID7.2 指定した期間のログを確認します
docker logs -t --since = "2020-10-01t19:00:00" -- "2020-10-01t19:00:00" コンテナ ID7.3 指定した時間以降のログを表示します:
#docker logs -t --since="2020-10-01t19:00:00" コンテナー ID
#docker logs --since 5mcontainer id7.4 過去 5 分間のログを表示します:
7.5 exec コマンドを使用して指定されたコンテナ上で bash を実行します:docker exec hellolearn -it /bin/bash
または
docker exec -it hellolearn bash7.6 docker ip
発生した問題問題の説明: デーモンからのエラー応答: ドライバーがエンドポイント 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 サイトの他の関連記事を参照してください。

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

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

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

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

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

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

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

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


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

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

ホットトピック









