SpringBoot と Docker の統合の詳細なプロセス

SpringBoot と Docker の統合の詳細なプロセス

最近メモに新しいことがたくさん追加されましたが、新しい環境に慣れておらず、メモを整理する意欲がありません。

1. デモプロジェクト

まず、Docker ホストにデプロイする簡単なプロジェクトを準備し、プロジェクトが正常に実行されるかどうかを確認します。

1.1 インターフェースの準備

Dockerのデプロイが成功したかどうかを確認するためのテストインターフェースを準備する

@レストコントローラ
@リクエストマッピング("/")
パブリッククラスHelloController{

    @GetMapping("/hello")
    パブリック文字列非表示() {
        「Hello World」を返します。
    }
}

1.2 構成の準備

統合管理を容易にするために、application.yml ファイルに Docker ホスト アドレスを追加します (この機能には、依存するプラグインのインストールが必要です)

サーバ:
  ポート: 8080

春:
  応用:
    名前: docker-deploy-test

ドッカー:
  ホスト: http://xxx.xxx.xxx.xxx:2375

2. Dockerがリモート接続を開く

Docker もクライアント/サーブ アーキテクチャ (デーモン デーモン) であり、デフォルトではローカルでのみアクセスできるため、プロジェクトを Docker にデプロイする前に、インターネットからアクセスできるように設定する必要があります。

1.1 設定ファイルを変更する

Dockerホストの設定を編集し、次の設定行を追加します(これは、どのアドレスでもポート2375にアクセスできることを意味します)。

$vim /usr/lib/systemd/system/docker.service
 
# ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock

1.2 設定を更新して再起動する

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

1.3 認証ログイン

ポート2357を直接開き、誰でもDockerホストにプッシュできるようにします。最初にマイニングイメージをプッシュしたところ、ホストがスタックしてログインできなくなりました。その後、システムイメージを再インストールするしかありませんでした。 Docker は SSL 証明書を使用したログインをサポートしています。外部ネットワーク環境の場合は、必ず SSL を使用してログインしてください (著者は認証用の OpenSSL メモを記録していますが、整理する時間がありませんでした)

3. IDEAにDockerプラグインをインストールする

私が使用した IDEA の 2019 バージョンには Docker プラグインがデフォルトで統合されており、再度インストールする必要はありません。 IDEA が接続するリモート ホストのアドレスとポートを一致させ、最後にリモート Docker ホストに接続されているかどうかを確認します。

ここで新しい Docker を作成し、ホスト アドレスを入力すると自動的に接続されます。接続が成功したと表示されたら、IDEA がホストに接続されていることを意味します。

4. MavenにDockerプラグインを追加する

前の手順の IDEA プラグインは、イメージをビルドおよびデプロイできるほか、Docker を管理することもできます。しかし、著者はMavenプラグインとIDEAプラグインを併用しており、プログラムの構築と展開を容易にしている。

<!-- docker プラグイン -->
<プラグイン>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <バージョン>1.0.0</バージョン>

    <!-- docker:build を Maven パッケージ ライフサイクルにバインドします -->
    <処刑>
        <実行>
            <id>docker-build-image</id>
            <phase>パッケージ</phase>
            <目標>
                <goal>ビルド</goal>
            </目標>
        </実行>
    </処刑>

    <!-- プラグインの設定 -->
    <構成>
        <!-- ビルドされたイメージの名前: タグ-->
        <画像名>${プロジェクト.アーティファクトID}:${プロジェクト.バージョン}}</画像名>
        <!-- dockerfile を保存するパス-->
        <dockerディレクトリ>${project.basedir}</dockerディレクトリ>
        <!-- Docker ホスト アドレス。初期化フェーズ中にプラグインによって application.yml から解析されます -->
        <dockerホスト>${docker.host}</dockerホスト>
        <!-- SSL ログインが有効な場合の SSL 認証証明書アドレス -->
        <!-- <dockerCertPath></dockerCertPath> -->
        <リソース>
            <リソース>
                <!-- イメージの構築に使用されるリソース (つまり、jar パッケージ) と、イメージがコンテナーにプッシュされるディレクトリ -->
                <ターゲットパス>/</ターゲットパス>
                <ディレクトリ>${project.build.directory}</ディレクトリ>
                <include>${project.build.finalName}.jar</include>
            </リソース>
        </リソース>
    </構成>
</プラグイン>

5. Dockerfileを書く

Dockerfileファイルを作成し、次の内容を入力して、プロジェクトのルートディレクトリに配置します。

openjdk:8-jdk-alpine から

メンテナー [著者] [[email protected]]

ARG JAR_FILE=/target/*.jar

${JAR_FILE} app.jar をコピーする

エクスポーズ8080

エントリポイント ["java","-jar","/app.jar"] 

6. プロジェクトをパッケージ化する

Maven プラグインは、パッケージと Docker:build の実行プロセスをバインドします。つまり、プロジェクトが jar にパッケージ化された後、Docker:build が自動的に実行され、イメージがビルドされてリモート Docker ホストに公開されます (プロジェクトが大きい場合は、イメージが Docker ホストにプッシュされるまでの待機時間が長くなります)。

7. コンテナを作成する

IDEA プラグインで Docker を管理できます。右下隅のサービスをクリックすると、接続された Docker でビルドされたイメージが表示されます。次に、このイメージを右クリックしてコンテナーを作成できます。

ポップアップ ボックスで、作成するコンテナーの名前とコンテナーにマップされたポートを入力し、[実行] をクリックしてコンテナーが起動するのを待ちます。起動が完了すると、IDEA プラグインに新しく作成されたコンテナが表示されます。それをクリックすると、コンテナの詳細が表示されます。

8. 展開を確認す​​る

ホストのIPアドレスまたはドメイン名を使用して、リリースされたばかりのテストインターフェースにアクセスします。

SpringBoot と Docker の統合に関するこの記事はこれで終わりです。SpringBoot と Docker の統合に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

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

<<:  HTML で dl(dt,dd)、ul(li)、ol(li) を使用する方法

>>:  hasLayout によって発生する CSS バグの一覧

推薦する

HTML/CSS におけるフロートの使用例の詳細

1. floatの基本的な使用例1. まず 2 つの div ボックスを作成し、高さ、幅、背景色を設...

React Fiber構造の作成手順

目次リアクトファイバーの作成1. 始める前に2. React.renderから始める3. 終了リアク...

MySQL 8.0 のメモリ関連パラメータの概要

理論的には、MySQL によって使用されるメモリ = グローバル共有メモリ + max_connec...

MySQLはinit-connectを使用してアクセス監査機能の実装を増やします

まず init-connect を通じて mysql 接続を初期化し、次にインスタンスに接続する必要...

CSS 要素を表示および非表示にする 9 つの方法

Web ページの制作では、要素の表示と非表示は非常に一般的な要件です。この記事では、要素を表示したり...

MySQL 8.0.11 圧縮版のインストールチュートリアル

この記事では、MySQL 8.0.11のインストールチュートリアルを参考までに紹介します。具体的な内...

Vue はチャット ボックスで絵文字を送信する機能を実装します

vueチャットボックスで絵文字を送信し、vueインターフェースで絵文字を送信するための具体的なコード...

反応ループデータの実装(リスト)

まず、バックグラウンドから来るデータをシミュレートしてみましょう。ここでは、コードをわかりやすくする...

データベースアカウントのパスワード暗号化の詳細な説明と例

データベースアカウントのパスワード暗号化の詳細な説明と例データベースアカウントとパスワードはデータベ...

Nginx レイヤー 4 負荷分散構成ガイド

1. レイヤー4負荷分散の概要レイヤー 4 ロード バランシングとは何ですか?いわゆる 4 層負荷分...

CSS はこのように使用できますか?気まぐれなグラデーションの芸術

前回の記事「1行のCSSコードの魅力」では、たった1行のCSSコードで生成できる美しい(奇妙な感じと...

HTML と CSS に関する基本的なメモ (フロントエンドでは必読)

HTMLに触れた当初はレイアウトにいつもテーブルを使っていましたが、とても面倒で見た目も悪かったの...

Linux 環境に mysql5.7.36 データベースをインストールするチュートリアル

ダウンロードアドレス: https://dev.mysql.com/downloads/mysql/...

Google Recaptcha 認証を使用した Vue 実装例

最近のプロジェクトでは、Google ロボット認証を使用する必要があります。これには VPN が必要...

最小限の展開で CentOS8 に OpenStack Ussuri をインストールする方法の詳細なチュートリアル

CentOS8 に最小限のデプロイメントで OpenStack Ussuri をインストールするため...