Centos8.3、dockerデプロイメントspringbootプロジェクトの実際のケース分析

Centos8.3、dockerデプロイメントspringbootプロジェクトの実際のケース分析

導入

現在、k8s は非常に人気があり、それについて学ぶために本を購入しました。しかし、k8s では数百、数千のサーバーの運用と保守が必要です。数台のサーバーしかないアプリケーションの場合、k8s を使用することは、大砲で蚊を殺すようなものです。従来の Tomcat デプロイメントを使用した、数台のサーバーのみでのアプリケーションの運用と保守は面倒で非効率的です。サービスのデプロイには 10 分以上かかります。デプロイメントに Jenkins を使用するのは複雑すぎます。長い間検討した後、デプロイメントには docker+dockerFile を使用することにしました。この展開方法はシンプルで効率的です。

Dockerのインストール

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun #ワンクリックインストールスクリプト systemctl enable docker.service #dockerを起動するように設定する systemctl restart docker.service #dockerサービスを開始する

Dockerリモートアクセスポートを開く

/usr/lib/systemd/system/docker.service ファイルを編集し、以下に示すように -Htcp://0.0.0.0:12375 -H unix://var/run/docker.sock を追加します。

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

systemctl daemon-reload # 設定を再読み込み systemctl restart docker.service # docker サービスを再起動

注: -Htcp://0.0.0.0:12375 は、任意の IP アドレスが TCP を使用してこのポートにアクセスできることを意味します。実際の状況に基づいて IP アドレスを一致させることができます。ここではトークンやキーはないので、特に注意してください。クラウドサーバーを使用する場合は、セキュリティグループ IP ホワイトリストアクセスに設定することを強くお勧めします。 Docker を使用してテスト環境で公開してから 3 ~ 4 時間以内に攻撃を受けました。ただし、攻撃に対して特に脆弱なポート 2375 を使用していました。

IDEAdocker環境を構成する

アイデアのインストール Docker 環境プラグインは次のとおりです。

インストールが完了したら、idea を再起動して springboot プロジェクトを開き、ルート ディレクトリに Dockerfile ファイルを作成します。以下のように表示されます。

Dockerfile を次のように編集します。

openjdk:11より
# イメージは openjdk:11-jdk-alpin から継承されます VOLUME /root/tmp
# /root/tmp ディレクトリがコンテナにマウントされていることを示します ADD build/libs/brief-plus-0.0.1-SNAPSHOT.jar apprun.jar
# イメージに bootJar を追加します。ルートディレクトリのコマンドは apprun.jar です。
 
エントリポイント ["java","-jar","/apprun.jar"]
#ENTRYPOINT コンテナの起動後にプログラムを実行するためのjavaコマンドを実行します # コンテナの時間を設定します ENV TZ=Asia/Shanghai
実行 ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# ======= その他の Dockerfile コマンド =========== ここでは使用しませんが、念のため説明します #COPY package.json /usr/src/app/
#ADD より高度なファイルのコピー #ADD 命令と COPY の形式と性質は基本的に同じです。ただし、COPY に基づいていくつかの機能が追加されます。
#CMD 命令は、コンテナのメイン プロセスのデフォルトの起動コマンドを指定するために使用されます。
#ENV は環境変数を設定します #HEALTHCHECK ヘルスチェック #EXPOSE この命令は、ランタイム コンテナーによって提供されるサービス ポートを宣言します。これは単なる宣言です。この宣言により、アプリケーションは実行時にこのポートのサービスを開きません EXPOSE 8090

build/libs/brief-plus-0.0.1-SNAPSHOT.jar apprun.jar という文に特に注意してください。 gradle によってコンパイルされたファイルは、次に示すように build/libs/ ディレクトリにあります。

Maven によってコンパイルされたファイルは、次に示すようにターゲット ディレクトリにあります。

Dockerfile は特定のディレクトリとパッケージ名に基づいてイメージ ファイルを生成するため、ここでは間違いがあってはなりません。

Docker サービスを構成する

動作環境を構成する

TCP接続サービスを作成する

3. Dockerに公開されたサービスを構成する

バインディングポートIPの詳細な設定

パッケージリリース

ヒント

1. Docker イメージ ファイルは、それぞれ独自の署名を持つブロックに分割されます。アップロードされるたびに、相違点が比較され、ファイルが再度アップロードされます。

2. タグに基づいてロールバックできるように、アップロードするたびにタグを変更することを忘れないでください。

3. サーバーのネットワーク構成とファイアウォールを変更するには、Docker サービスを再起動する必要があります。

一般的な docker コマンド:

Dockerを再起動する

systemctl restart docker # docker サービスを再起動します systemctl daemon-reload # docker 設定を再読み込みします

30分以内にログを表示

docker ログ --since 30m id

以上がCentos8.3とspringbootプロジェクトのdockerデプロイメントの実際の記録の詳細な内容です。springbootプロジェクトのdockerデプロイメントの詳細については、123WORDPRESS.COMの他の関連記事に注目してください!

以下もご興味があるかもしれません:
  • Idea で Docker を使用して SpringBoot プロジェクトをデプロイする詳細な手順
  • Dockerを使用してSpringBootプロジェクトをデプロイする方法
  • Dockerfile を使用して SpringBoot プロジェクトをデプロイする方法
  • Springbootプロジェクトでwarパッケージdockerパッケージをビルドし、リソースの下に静的リソースが見つからない場合の解決策
  • SpringbootプロジェクトのDockerデプロイメント実践の詳細な説明

<<:  よくある MySQL テーブル設計エラーの概要

>>:  HTML CSS の 3 つの一般的なスタイル セレクター

推薦する

JS で async と await を使用する方法

目次1. 非同期2. 待つ: 3. 包括的なアプリケーション1. 非同期async 、非同期コードが...

CSS3を使用してテキストの垂直配置を実現する方法

最近のプロジェクトでは、テキストを垂直に揃えたいと考え、CSS の writing-mode プロパ...

vue3ソースコード解析の簡単な実装方法

目次序文🍹準備🍲vue3 の使い方🍖 実装要約する序文最近、私の最初の公式 vue3 + ts プロ...

Rancher で Kubernetes 用の標準化された VMware イメージを構築する方法

Kubernetes を学習するときは、Kubernetes 環境で練習する必要があります。ただし、...

HTML でスクロールバーを使用する際のヒントを共有する

今日、牛南ニュースリリースシステムについて学んでいたとき、牛南先生はスクロールバーに関するいくつかの...

Vueでドラッグ可能なコンポーネントを実装する方法

この記事では、Vueでドラッグ可能なコンポーネントとドラッグ可能なコンポーネントを実装する方法を参考...

HTML で色を表すには、6 桁の 16 進コード、RGB、またはキーワードを使用します。

HTML で色を表す方法は 3 つありますが、最もよく使われるのは 6 桁の 16 進コード表現です...

Meituan DBデータをデータウェアハウスに同期するアーキテクチャと実践

背景データ ウェアハウス モデリングでは、何ら処理されていない元のビジネス レイヤー データは OD...

MySQL ファントムリードとその排除方法の詳細な説明

目次トランザクション分離レベルファントムリーディングとは何ですか?ファントムリードを排除する方法要約...

珍しいけれど役に立つJSテクニックをいくつか紹介します

序文プログラミング言語には通常、さまざまな隠されたトリックが含まれており、これらのトリックを上手に使...

WeChat アプレット計算機の例

この記事では、参考までに、計算機を実装するためのWeChatアプレットの具体的なコードを紹介します。...

MySQL データのバックアップと復元のサンプル コード

1. データのバックアップ1. mysqldumpコマンドを使用してバックアップするmysqldum...

Linux で LVGL エミュレータをコンパイルする際のエラーの解決方法

目次1. エラー現象2. エラー分析3. エラー解決1. エラー現象仮想マシンでLVGLエミュレータ...

HTML でのメタタグと使用法の詳細な説明

これ以上無駄話をして時間を無駄にしないので、今日の話題を始めましょう。 HTML のメタタグ1. メ...