docker のインストールと使用方法については、前の 2 つの記事を参照してください。 Docker Kubernetes ダッシュボードのインストールとデプロイメントの詳細、および Docker がリンクを使用してコンテナー間の接続を確立する方法。この記事では主に、Springboot プロジェクトを Docker にデプロイする方法を紹介します。 SpringBoot プロジェクトの作成方法の詳細については、この記事「IDEA で SpringBoot Web-MVC プロジェクトをビルドする際に発生した問題」を参照してください。 この記事では主に、Docker を使用して SpringBoot をデプロイする 3 つの方法、つまり、開始方法、jar パッケージ置換デプロイとスクリプト デプロイ、ステップ バイ ステップ チュートリアルを紹介します。なお、これら 3 つの方法の名前は私自身のものであり、非公式なものであることに注意してください。 プロジェクトディレクトリDockerファイル後で使用する Dockerfile ファイルを作成します。 # springboot ファイル実行用の Docker イメージ # バージョン 0.0.1 # 著者: toutou # ベースイメージはJavaを使用しています java:8より # VOLUME は一時ファイル ディレクトリを /tmp として指定します。 # 効果は、ホストの/var/lib/dockerディレクトリに一時ファイルを作成し、それをコンテナの/tmpにリンクすることです。 # ボリューム /tmp # jar パッケージをコンテナに追加し、名前を app.jar に変更します。 learn-web-0.0.1-SNAPSHOT.jar app.jar を追加します。 # jar パッケージを実行します RUN bash -c 'touch /app.jar' エントリポイント ["java","-jar","/app.jar"] ###起動ポート番号を宣言する#EXPOSE 8301 ファイルの展開サーバー上に新しいフォルダー /data/docker/hellolearn を作成し (ファイル パスはカスタマイズできます)、Maven によってパッケージ化された jar と上記で作成した Dockerfile ファイルをサーバー上の新しいフォルダー (/data/docker/hellolearn) にコピーします。 画像を生成する
docker build -t イメージ名: タグ Dockerfile の相対位置。ドットは現在のディレクトリを表し、タグが書き込まれていない場合はデフォルトは最新です。 コンテナを起動する
-d パラメータはコンテナをバックグラウンドで実行します。--name は指定されたコンテナの名前です。-p はポート マッピングを行います。この場合、サーバーの 8301 ポート (コロンの前のポート) がコンテナの 8301 ポート (コロンの後のポート) にマッピングされます (application.properties は 8301 で構成されています) ウェブサイトをご覧くださいJAR パッケージ マッピングの展開上記の手順に従うと、docker デプロイメント springboot のプロセス全体を簡単に処理できます。ただし、コンテナを起動した後、jar パッケージを更新する必要があるたびに、イメージを再作成してからコンテナを再作成する必要があります。このプロセスは非常に面倒で非効率的です。では、イメージやコンテナを更新せずに、jar パッケージを直接更新してデプロイを完了するにはどうすればよいでしょうか? 5.1 Dockerfileの更新 # springboot ファイル実行用の Docker イメージ # バージョン 0.0.1 # 著者: toutou # ベースイメージはJavaを使用しています java:8より エクスポーズ8301 エントリポイント ["java","-jar","/data/learn-web-0.0.1-SNAPSHOT.jar"] 最後の行 5.2 docker buildコマンドを使用してイメージをビルドする
5.3 コンテナの作成と起動
-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ファイルを作成する
hellolearn.sh を /data/docker/hellolearn/scriptdeploy/package にアップロードします。このフォルダー パスはカスタマイズできます。後で使用するので、このフォルダー パスを覚えておいてください。 6.2 スクリプト実行権限を追加する
6.3 Dockerfileを作成する # springboot ファイル実行用の Docker イメージ # バージョン 0.0.1 # 著者: toutou # ベースイメージはJavaを使用しています java:8より エクスポーズ8301 コマンド ["sh","-c","/data/hellolearn.sh"] 上記のテキストの最後のコマンドは ENTRYPOINT ですが、スクリプトの展開では CMD に変更されることに注意してください。ENTRYPOINT と CMD の具体的な違いに興味がある場合は、それについて学ぶことができます。 6.4 jarパッケージをアップロードする jar パッケージを、hellolearn.sh と同じフォルダー ディレクトリ、つまり /data/docker/hellolearn/scriptdeploy/package に配置します。コンテナーを作成するときに、ディレクトリ (ホスト ディレクトリ) をコンテナーの /data ディレクトリにマップします。 。 6.5 ファイルディレクトリ構造図 ここのディレクトリ構造に混乱しているかどうかはわかりません。一目でわかるホストマシンのディレクトリ構造図をアップロードしました。 6.6 イメージの作成
末尾のドットは現在のディレクトリを表すため、イメージを生成するコマンドは Dockerfile が配置されているディレクトリで実行する必要があります。 6.7 コンテナの作成と起動
ホストの /data/docker/hellolearn/scriptdeploy/package ディレクトリをコンテナの /data ディレクトリにマップします。この方法では、jar パッケージが変更された場合、ホスト ディレクトリ内の jar パッケージを直接更新できます。 jar パッケージの名前が変更された場合でも、hellolearn.sh スクリプトを更新する必要があります。更新後、コンテナを再起動します。 6.8 Webテストの結果 Docker ログを表示する
オプションの説明:
7.1 指定した時間後のログを表示し、最後の 100 行のみを表示します。
7.2 指定した期間のログを確認する
7.3 指定した時間後のログを表示します。
7.4 過去 5 分間のログを表示します。
7.5 exec コマンドを使用して、指定されたコンテナ上で bash を実行します。 7.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: その名前のチェーン/ターゲット/一致がありません。 解決策: Docker を再起動します。 特定の問題の詳細については、「デーモンからのエラー応答: ドライバーがエンドポイント mysql3308 での外部接続のプログラミングに失敗しました ( ソースコードアドレス https://github.com/toutouge/javademosecond/tree/master/hellolearn SpringBoot を docker にデプロイして jar パッケージを置き換える方法についてはこれで終わりです。SpringBoot を docker にデプロイして jar パッケージを置き換える方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: HTML テーブル マークアップ チュートリアル (5): ライト ボーダー カラー属性 BORDERCOLORLIGHT
一部のWebサイトでアップロードする場合、「参照」ボタンをクリックすると、[ファイルの選択]ダイアロ...
【著者】 Liu Bo: Ctrip テクニカル サポート センターのシニア データベース マネージ...
Mac OS X で TAR.GZ から MySQL 5.7 をインストールする MySQL 5.6...
この記事では、例を使用して、MySQL でスケジュールされたタスクを設定する方法について説明します。...
1. 原因: SQL ファイルをインポートする必要があるのですが、インポートできません。この文を実行...
MySQL ストアド プロシージャ1. ストアドプロシージャ構文(フォーマット)を作成する 区切り文...
序文この記事では主にMySQLのメモリ使用量に関する関連コンテンツを紹介し、皆さんの参考と学習のため...
Nginx は、マスター プロセス (MasterProcess) と、同じ数のホスト CPU コア...
プロジェクトのテーマがすべての人の美的感覚を満足できないこともあります。このとき、スキン変更機能は非...
この文書はMySQL Server 8.0.3のインストールと設定方法を参考のために記録したものです...
目次1. 一意の値をフィルタリングする2. 短絡評価2.1 シナリオ例3. ブール変換4. 文字列を...
1. 対象環境Windows 7 64ビット2. 材料(1)VC++2010リリースパッケージ(64...
目次序文1. 画像の最適化2. .mapファイルの生成を無効にする3. ルーティングの遅延読み込み4...
サーバーの構築には node.js を選択しました。まだインストールしていない方は、私の他の nod...
目次1. Angular 2 アプリケーションのライフサイクル フックとは何ですか? 2. Angu...