IDEA が docker を統合して springboot プロジェクトを展開するプロセス全体

IDEA が docker を統合して springboot プロジェクトを展開するプロセス全体

1. IDEAはdockerプラグインをダウンロードします

ここでは詳細には触れませんが、他のプラグインと同じようにインストールしてください。

2. クラウドサーバーDocker

注: 私のサーバーはcentOS 7を使用しています

2.1 Dockerのインストール

https://www.jb51.net/article/213611.htm

2.2 Dockerサービスを停止する

Docker サービスを再起動するときにエラーが発生しないようにするには、まず Docker サービスを停止してから構成ファイルを変更するのが最適です。

Docker を停止する前に、まず実行中のコンテナを停止する必要があります。そうしないと、後でコンテナを起動するときにエラーが発生する可能性があります。

実行中のコンテナを停止します。

docker stop [コンテナID]

次にdockerサービスを停止します

systemctl ドッカーを停止する

2.3 Docker設定ファイルの変更

HTTP を使用して IDEA をサーバー上の Docker に接続するには、Docker 構成ファイルを次のように変更する必要があります。

vim /usr/lib/systemd/system/docker.service

Execstart 行を変更し、次の内容に置き換えて、HTTP リモート接続用にポート 2375 を開きます。

実行開始=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

2.4 設定ファイルを更新する

コマンドは次のとおりです。

systemctlデーモンリロード

設定ファイルが有効かどうかをテストするには、サーバー上で次のコマンドを入力します。JSON 文字列の内容が表示されれば、ファイルは有効です。

カール http://127.0.0.1:2375/バージョン

2.5 Dockerサービスを開始する

コマンドは次のとおりです。

systemctl dockerを再起動します

2.6 ファイアウォールにポート2375を追加する

コマンドは次のとおりです。

ファイアウォールコマンド --zone=public --add-port=2375/tcp --permanent

ファイアウォールを再起動します。

ファイアウォール-cmd --reload

2.7 Alibaba Cloudがセキュリティグループルールを追加

ここで、インスタンス ページでセキュリティ グループを入力し、ルールを構成してポート 2375 を開く必要があることに注意してください。

2.8 リモートHTTP接続のテスト

ローカルブラウザにhttp://127.0.0.1:2375/versionと入力します。同様に、JSON 文字列が表示されれば、HTTP 接続が可能です。

この時点で、IDEA を使用して dokcer を統合できます。

3. Mavenプロジェクトのパッケージ化

3.1 プラグインのパッケージ化

pomファイルにspringbootパッケージングプラグインを追加する

<プラグイン>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
</プラグイン>

3.2 リソースファイルのパッケージ化とパッケージ化後の場所

Java ソース ファイルをパッケージ化するだけでなく、XML/YML/プロパティ/HTML ファイルなどのリソース ファイルもパッケージ化する必要があります。ただし、HTML ファイルがパッケージ化される場所には注意してください。HTML ファイルは META-INF/resources ディレクトリに配置する必要があります。そうしないと、jar パッケージを起動した後に HTML ページにアクセスできなくなります。

<リソース>
    <リソース>
        <ディレクトリ>src/main/java</ディレクトリ>
        <!--ここではマッパー ファイルを java ディレクトリに配置するので、コンパイル場所を宣言する必要があります-->
        <含まれるもの>
            <include>**/*.xml</include>
        </includes>
        <フィルタリング>真</フィルタリング>
    </リソース>
    <リソース>
        <!--yml 構成ファイルのコンパイル場所を宣言します-->
        <ディレクトリ>src/main/resources</ディレクトリ>
    </リソース>
    <リソース>
        <!-- HTML ファイルのコンパイル場所を宣言し、コンパイルされたファイルを指定された場所に配置します -->
        <ディレクトリ>src/main/webapp</ディレクトリ>
        <targetPath>META-INF/リソース</targetPath>
    </リソース>
</リソース>

3.3 Dockerプラグイン

注意すべき点が 2 つあります。1 つ目は、Docker イメージ名の前にプレフィックスが必要であり、プレフィックスは [プレフィックス]:[イメージ名]:[バージョン番号] で構成されます。2 つ目は、イメージ名を指定するときに大文字を含めないことです。

プロジェクト情報では名前とバージョンの両方が使用されます

<groupId>組織チーム</groupId>
<artifactId>クールなミーティング</artifactId>
<バージョン>1.0-SNAPSHOT</バージョン>
<name>クールミーティング</name>
<description>docker は会議を開始します</description>

<プロパティ>
    <java.version>1.8</java.version>
    <docker.image.prefix>チーム</docker.image.prefix>
</プロパティ>


<プラグイン>
    <プラグイン>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
    </プラグイン>
    <!-- tag::plugin[] -->
    <プラグイン>
        <groupId>com.spotify</groupId>
        <artifactId>docker-maven-plugin</artifactId>
        <バージョン>1.0.0</バージョン>
        <構成>
            <dockerホスト>http://127.0.0.1:2375</dockerホスト>
            <!--画像名には大文字は使用できません-->
            <イメージ名>${docker.image.prefix}/${project.artifactId}</イメージ名>
            <!--Dockerfile の場所-->
            <dockerディレクトリ>${project.basedir}/src/main/docker</dockerディレクトリ>
            <リソース>
                <リソース>
                    <ターゲットパス>/</ターゲットパス>
                    <!--ターゲットの場所-->
                    <ディレクトリ>${project.build.directory}</ディレクトリ>
                    <!--jar パッケージと Dockerfile を同じディレクトリに配置します-->
                    <include>${project.build.finalName}.jar</include>
                </リソース>
            </リソース>
        </構成>
    </プラグイン>
    <!-- end::plugin[] -->

    <プラグイン>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <構成>
            <skipTests> 真</skipTests>
        </構成>
    </プラグイン>
</プラグイン>

Dockerfile ファイルは以下のとおりです。ファイルを作成する際は、D を大文字にする必要があることに注意してください。/meetingMS.jar は書きやすいようにエイリアスになっています。

java:8より
ボリューム /tmp
coolmeeting-1.0-SNAPSHOT.jar /meetingMS.jarを追加します。
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/meetingMS.jar"]

3.4 クリーン、インストール、dockerビルド

まずMavenを使ってクリーンアップとインストールを行い、次にMavenプラグインdockerを使ってビルドします。

ここに画像の説明を挿入

パッケージ化されたファイルのディレクトリ:

ここに画像の説明を挿入

コンテナを起動する

ここに画像の説明を挿入

起動パラメータを設定する

ここに画像の説明を挿入

4. 遭遇した落とし穴

  • 画像名の問題(大文字は使用できません)
  • Springboot 構成ファイル application.yml をパッケージ化できない
  • パッケージ化後にHTMLページにアクセスできない

5. 参考文献

jar としてパッケージ化された Springboot は jsp または html にアクセスできません (404 エラー)

yml またはプロパティ ファイルがスキャンされない場合について

Jarパッケージを実行するときに起動ポートを指定します

スタックオーバー

IDEAはDockerを統合し、SpringBootアプリケーションを迅速にデプロイします

IDEAはDockerを統合して迅速な展開を実現

これで、IDEA が docker を統合して springboot プロジェクトをデプロイする方法に関するこの記事は終了です。IDEA が docker を統合して springboot プロジェクトをデプロイする方法に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • IDEA2021.2 で docker を設定して、Springboot プロジェクトをイメージ化し、ワンクリックでリリースする方法
  • Idea で Docker を使用して SpringBoot プロジェクトをデプロイする詳細な手順
  • IDEA の Docker プラグインを介して Springboot プロジェクトを公開する方法の詳細なチュートリアル
  • アイデアに基づいてSpringbootプロジェクトをDockerにデプロイする
  • IDEA の Docker プラグインを介して SpringBoot プロジェクトをデプロイするプロセスの詳細な説明

<<:  アニメーションの再生と一時停止を制御するための CSS のヒント (非常に実用的)

>>:  HTML ドキュメントに CSS を埋め込む一般的な 3 つの方法

推薦する

Node.jsを使用してホットリロードページを実装する方法の詳細な説明

序文少し前に、browser-sync+gulp+gulp-nodemon を組み合わせて、本番環境...

CSS で div にスクロールを追加し、スクロール バーを非表示にする

CSS は div にスクロールを追加し、スクロール バーを非表示にします。具体的なコードは次のとお...

Alibaba Cloud で MySQL リモート接続を構成するための詳細な手順

序文ご存知のとおり、デフォルトでは、Alibaba Cloud にインストールされている MySQL...

jsはシンプルなショッピングカートモジュールを実装します

この記事の例では、参考までに、シンプルなショッピングカートモジュールを実装するためのjsの具体的なコ...

Linux サーバーは最大いくつのポートを開くことができますか?

目次ポート関連の概念:ポートとサービスの関係1: nmapツールが開いているポートを検出する2: n...

Linux における $ 記号の基本的な使い方のまとめ

Linuxバージョン: CentOS 7 [root@azfdbdfsdf230lqdg1ba91 ...

Rabbitmq heartbea ハートビート検出メカニズムの原理の分析

序文RabbitMQ を使用する場合、一定期間クライアントと RabbitMQ サーバーの間でトラフ...

HTML チュートリアル: よく使われる HTML タグのコレクション (5)

関連記事:初心者が学ぶ HTML タグ (4)導入された HTML タグは、必ずしも XHTML 仕...

JSはじゃんけんゲームを実装します

この記事の例では、じゃんけんゲームを実装するためのJSの具体的なコードを参考までに共有しています。具...

CentOS 7.4 64 ビット版に MySQL 8.0 をインストールして設定するための詳細な手順

ステップ1: MySQL YUMソースを取得するMySQLの公式サイトにアクセスして、RPMパッケー...

Ubuntu で時刻同期に NTP を使用する

NTP は、ネットワーク上で時間を同期するための TCP/IP プロトコルです。通常、クライアントは...

Windows に mysql5.7.28 winx64 の解凍バージョンをインストールするための詳細なチュートリアル

目次1. 解凍する2. データフォルダを作成する3. MySQLに環境変数を追加する3.1 コントロ...

Vue3は独自のページングコンポーネントをカプセル化します

この記事の例では、vue3 が独自のページングコンポーネントをカプセル化する具体的なコードを参考まで...

MySQLのスペースをクリーンアップするいくつかの具体的な方法

目次序文1. ファイルのディスク使用量を確認する1.1 ディスク容量の使用状況を確認する1.2 ディ...

固定サイドバーを実現するためのJavaScript

固定サイドバーを実装するにはJavaScriptを使用します。参考までに、具体的な内容は次のとおりで...