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 つの方法

推薦する

webpack と rollup を使用してコンポーネント ライブラリをパッケージ化する方法

序文以前、ローディングスタイルのコンポーネントを作成しました。コードの再利用性を実現するために、この...

Dockerコンテナでアプリケーションサービスを自動的に起動する方法の例

コンテナの起動時に Docker コンテナ内のアプリケーション サービスを自動的に起動する場合。 D...

JavaScript 関数のカリー化

目次1 関数カリー化とは何ですか? 2 カレーの役割と特徴2.1 パラメータの再利用2.2 早期復帰...

Docker Docker の保存場所を変更する コンテナイメージのサイズ制限を変更する操作

これは新しいバージョンではもう不可能なようで、推奨されません。そうでない場合は、ソフト リンクを直接...

Linux jdk のインストールと環境変数の設定チュートリアル (jdk-8u144-linux-x64.tar.gz)

最初にsudo suコマンドを使用して root アカウントに切り替えることをお勧めします。そうしな...

Win10 64 ビットで圧縮パッケージを使用して最新の MySQL 8.0.18 をインストールするチュートリアル (画像とテキスト付き)

WIN10 64ビットに最新のMySQL8.0.18をインストールダウンロード公式サイトから最新バ...

MySQL のインデックスの原理とクエリの最適化の詳細な説明

目次1. はじめに1. インデックスとは何ですか? 2. インデックスはなぜ必要なのでしょうか? 2...

MySQLを閉じることができない問題を解決する方法

mysql が閉じない場合の解決策:コンピュータのタスクバーを右クリックしてタスクマネージャーを開き...

ドッカー専用倉庫港湾建設プロセス

1. 準備1.1 港ダウンロードハーバーダウンロードアドレス:リンクリンクの説明を追加し、必要なバー...

WeChatミニプログラムでEchartとサブパッケージを使用するための完全な手順

序文休日は終わっていますが、それは別の形で(お腹に触れることで)私たちに現れます。ミニプログラムでデ...

HTMLはキャンバスを使用して箇条書きスクリーン機能を実装します

導入最近、大きな課題をこなす際に、弾幕プレイヤーを作る必要がありました。他の人のソースコードを借りて...

ハイパーリンクを表示して開く方法

<br />インターネット上の無数の情報は基本的に HTML ドキュメントで構成されてお...

Ubuntu 18仮想マシンのクローン作成後に同じIPアドレスになる問題の解決方法

序文最近、仮想マシンを使用して Ubuntu 18.04 をインストールしました。クローン作成後、I...

ネイティブ JS でスネーク ゲームを書く

この記事では、参考までに、JSでスネークゲームを書くための具体的なコードを紹介します。具体的な内容は...

動的なテーブル効果を実現するJavaScript

この記事では、動的なテーブル効果を実現するためのJavaScriptの具体的なコードを参考までに紹介...