Springboot アプリケーションを迅速にデプロイするために Docker とアイデアを統合する詳細なプロセス

Springboot アプリケーションを迅速にデプロイするために Docker とアイデアを統合する詳細なプロセス

1. はじめに

コンテナ化という言葉は誰もが知っていると思います。コンテナ化という言葉を聞くと、docker、k8s、jenkins、rancher などを思い浮かべるかもしれません。そこで今日は、idea が docker を使用して SpringBoot アプリケーションを迅速にデプロイする方法についてお話します。

2. 環境とツール

  • Windows 10 (開発)
  • Centos 7.6 (デプロイメント)
  • アイデア
  • ドッカー
  • xシェル

3. Dockerをインストールし、リモート接続を構成する

インターネット上で Docker をインストールするには多くの手順があるため、ここでもう一度それらについて説明します。

最初に更新

sudo yum アップデート

最新のdockerをインストールする

yum で docker をインストール -y

図のように設置後

Dockerを起動する

systemctl ドッカーを起動する

docker imagesを使用すると、イメージのステータスを表示できます。次の図は、起動が成功したことを示しています (現在、イメージはありません)

ここに画像の説明を挿入

下記のように表示される場合は起動に失敗したことを意味します

ここに画像の説明を挿入

dockerリモート接続を開き、 docker.serviceファイルを編集します。

vim /lib/systemd/system/docker.service

開封後の内容は以下の通りです。

ここに画像の説明を挿入

緑色のカーソルがある行に次のコードを追加します。

# centos7 以上 ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
# centos7 以下 ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375

ここでは 12377 などの他のポートを使用します。変更後の内容は以下のようになります。

ここに画像の説明を挿入

保存したら、設定ファイルを再読み込みして Docker を再起動します。

systemctlデーモンリロード 
systemctl dockerを再起動します

ポート12377がリッスンされているかどうかを確認するには、 lsof -i:12377を実行します。

ここに画像の説明を挿入

クラウドサーバーを使用している場合は、12377 ファイアウォール ルールを有効にする必要があります。デフォルトのポート 2375 を使用する場合は、仮想マシンまたはイントラネットでのみ使用しても問題ありません。パブリック ネットワークに公開されている場合は、翌日に CPU がいっぱいになり、大量の馬や採掘プログラムがマウントされていることに気付くでしょう。時間のある学生は、セキュリティ構成をさらに構成できます。ここで検索できます。

4. アイデアはリモートDockerに接続します

Dockerプラグインをインストールする

ここに画像の説明を挿入

設定接続がインストールされたら、以下に示すように設定内の場所を見つけます。

ここに画像の説明を挿入

次の形式で TCP ソケット上の Docker アドレスを設定します。
tcp://ip:12377 。入力後、しばらく待つと接続テストが行​​われます。接続に成功すると上図のように表示されます。 5. Springbootプロジェクト構成docker pom構成ブロガーの現在のプロジェクトパッケージ方法はjarパッケージであり、pomのプロパティ構成は次のとおりです。

<プロパティ>
    <!-- プロパティ ノード "springboot" に Docker イメージのプレフィックスを設定します -->
    <docker.image.prefix>スプリングブート</docker.image.prefix>
</プロパティ>

ビルドは次のように構成されます。

 <ビルド>
        <finalName>docker-デモ</finalName>
        <プラグイン>
            <プラグイン>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <バージョン>${spring-boot.version}</バージョン>
            </プラグイン>
            <プラグイン>
                <!-- docker-maven プラグイン -->
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <バージョン>1.0.0</バージョン>
                <構成>
                    <dockerホスト>http://ip:12377</dockerホスト>
                    <イメージ名>${docker.image.prefix}/${project.artifactId}</イメージ名>
                    <dockerディレクトリ>src/main/docker</dockerディレクトリ>
                    <リソース>
                        <リソース>
                            <ターゲットパス>/</ターゲットパス>
                            <ディレクトリ>${project.build.directory}</ディレクトリ>
                            <include>${project.build.finalName}.jar</include>
                        </リソース>
                    </リソース>
                </構成>
            </プラグイン>
        </プラグイン>
    </ビルド>

resourcesはパッケージ化されたjarを見つけるためのもので、dockerDirectoryはプロジェクトで設定されたDockerfile見つけるためのもので、imageNameはイメージ名です。

Dockerfile を作成します (Dockerfile はキャメルケースではないことに注意してください)
構造は下図の通りです

ここに画像の説明を挿入

Dockerfile ファイルの内容:

FROM williamyeh/java8 # ソースは docker search java8 を使用して検索できます。VOLUME /tmp
docker-demo.jar を追加します /app/docker-demo.jar
#COPY target/demo-0.0.1-SNAPSHOT.jar app.jar
エントリポイント ["java", "-jar", "/app/docker-demo.jar"]

FROM : ベースイメージを指定します。最初のコマンドである必要があります。
VOLUME : 永続的なディレクトリを指定するために使用します
ADD : コンテナにローカルファイルを追加します。Tar ファイルは自動的に解凍されます (ネットワーク圧縮リソースは解凍されません)。wget と同様に、ネットワークリソースにアクセスできます。
ENTRYPOINT : コンテナを実行可能にする設定

他の指示は自分で検索できます

  • ここまでで必要な設定は完了です。
  • アイデアの右側にあるMavenウィンドウを見つけて、cleanを実行します。

ここに画像の説明を挿入

クリーンアップが完了したら、パッケージごとにパッケージを実行します。

ここに画像の説明を挿入

次に、図に示すようにdocker:buildを実行します。

ここに画像の説明を挿入

このプロセスでは、ターゲットディレクトリにdockerフォルダが作成され、 Dockerfileファイルと生成された jar パッケージがコピーされます。次に、Dockerfile 内の構成に従って、ベースイメージがプルされ、jar がサーバーの指定された場所に転送され、イメージが作成されます。ビルドが成功したら、アイデアの下部にあるServicesをクリックします。

ここに画像の説明を挿入

ウィンドウは次のようになります

ここに画像の説明を挿入

Docker をダブルクリックして接続します。接続が成功すると、イメージとコンテナの実行ステータスが表示されます。

ここに画像の説明を挿入

次に、springboot/**:latestイメージを右クリックしてコンテナを作成します。

ここに画像の説明を挿入

設定を作成するための作成オプションがポップアップ表示されます

ここに画像の説明を挿入

コンテナ名と実行オプションを設定し、最後に「実行」をクリックしてコンテナを実行します。サービス ウィンドウで、コンテナの実行ログを確認できます。

ここに画像の説明を挿入

ここまでで、dockerを統合してSpringbootアプリケーションを素早くデプロイするというアイデアは完成しました。jenkins+k8s+dockerの使い方については後ほどまとめます。

これで、Springboot アプリケーションの idea integration docker quick deploy に関するこの記事は終了です。さらに関連する idea docker deploy springboot コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • SpringBoot アプリケーションの Docker デプロイメントの実装手順
  • SpringBoot と Docker の統合の詳細なプロセス
  • SpringBoot プロジェクトの Docker クイック デプロイメントの紹介

<<:  2012年のベストWebデザイン作品レビュー[パート1]

>>:  H5でクリックされたときにaタグの背景色をキャンセルする方法

推薦する

JSは5つ星の賞賛効果を達成

JS を使用してオブジェクト指向メソッドを実装し、JD.com の 5 つ星レビュー効果を実現します...

JavaScriptは組み込みオブジェクトのプロトタイプメソッド実装を追加します

オブジェクトがメソッドを呼び出す順序:インスタンス内にメソッドが存在しない場合は、インスタンス オブ...

Linux でシェル スクリプトを使用して jar パッケージ プロジェクトを展開するための完全な手順

1. JDKをインストールする コンピュータの動作桁を確認します。 uname -ar 2017 x...

マウスを動かしたときにセカンダリメニューバーを実装するために HTML+CSS を使用する例

この記事では、マウスを動かしたときにセカンダリ メニュー バーを実装するために HTML+CSS を...

フロントエンドページのスライド検証を実装するための JavaScript + HTML

この記事では、フロントエンドページのスライド検証を実装するためのJavaScript + HTMLの...

知っておくべきHTML最適化テクニック

Web ページのパフォーマンスを向上させるために、多くの開発者は、JavaScript、画像の最適化...

Linux whatisコマンドの使い方

01. コマンドの概要whatis コマンドは、システム コマンドの簡単な説明を含むいくつかの特別な...

VMware ワークステーション 12 に Ubuntu 14.04 (64 ビット) をインストール

1. インストール環境コンピュータモデル: Lenovo Y471a (i5) ノートパソコンシステ...

Linux システムによって報告される tcp_mark_head_lost エラーの処理方法

問題の説明最近、ホストから次のカーネル情報が報告されました。 7月8日 10:47:42 cztes...

MySQL データ操作 - DML ステートメントの使用

例示するDML(データ操作言語)とは、データベースの追加、削除、変更を行うための操作命令のことです。...

MySQLのconcat関連関数の詳細な説明

1. concat() 関数機能: 複数の文字列を 1 つの文字列に連結する構文: concat(s...

画像ソーシャルネットワーキングサイトのUIアプリケーションの比較分析(図)

私たちの生活、仕事、勉強において、ソーシャル ネットワークは徐々に将来のインターネット発展のトレンド...

MySQL移行計画と落とし穴の実践記録

目次背景解決策1: 古いデータをバックアップするオプション2: テーブルを分割する解決策3: tid...

純粋な HTML+CSS でオリンピック リングを実装するためのサンプル コード

レンダリング コード - 青と黄色のリングを例に挙げます <div class="コ...

CSS レスポンシブ レイアウト システムの例コード

レスポンシブ レイアウト システムは、今日の一般的な CSS フレームワークではすでに非常に一般的で...