Spring環境を構成するためのDocker-composeの手順

Spring環境を構成するためのDocker-composeの手順

最近、メンバーがテストできるようにプロジェクトをパッケージ化する必要がありますが、パッケージ化された操作は開発に影響を与えます。そのため、 dockerを使用して本番環境をシミュレートし、パッケージ化されたプロジェクトを実行して、開発とメンバーのテストを同時に行う予定です。

元のプロジェクトが大きすぎたため、大規模なソフトウェア エンジニアリング実験で試してみることにしました。大規模なソフトウェア エンジニアリング実験では、 spring-boot,redis,mysql,angular,nginx環境を使用しました。まずspring-boot,redis,mysqldockerビルドをバックグラウンドで試しました。

docker-compose

composeプロジェクトは、Docker コンテナ クラスターの迅速なオーケストレーションを実現することを目的とした、Docker の公式オープン ソース プロジェクトです。 compose 、複数の Docker コンテナを定義して実行するアプリケーションです。

アプリケーション コンテナはDockerfileテンプレート ファイルを使用して作成できることは誰もが知っていますが、通常、プロジェクトでは、 jdk8redismysqlなどのアプリケーションを同時に必要とする私のバックエンドのように、複数のアプリケーション コンテナが必要になります。 docker-composeまさにこのニーズを満たします。これにより、ユーザーは単一のdocker-compose.ymlテンプレート ファイルを通じて、関連するアプリケーション コンテナーのグループをプロジェクトとして定義できるようになります。

composeにおける 2 つの重要な概念:

サービス: アプリケーションのコンテナ。実際には、同じイメージを実行する複数のコンテナ インスタンスを含めることができます。
プロジェクト: docker-compose.ymlファイルで定義された、関連するアプリケーション コンテナーのセットで構成される完全なビジネス ユニット。

サービスは必要なdockerコンテナであり、プロジェクトは多くのサービスで構成されています。 docker-compose理解したら、環境を構築できます。

spring-bootをビルドする

spring-bootをコンパイルするには、次の手順に従います。

  • jdk8イメージに基づく
  • spring-bootの下のmvnwとpom.xmlをコンテナにコピーし、Maven依存関係をインポートします。
  • srcディレクトリのソースコードをコンテナにコピーし、Mavenを使用してspring-bootプロジェクトをパッケージ化します。
  • jre8環境を使用してプロジェクトを実行する

Dockerfileをビルドします:

#### Spring-Bootプロジェクトをopenjdk:8-jdk-alpineからビルドします

# dockerコンテナ内のプロジェクト作業ディレクトリWORKDIR /appを設定します

# Maven 実行可能プログラムをコンテナーにコピーします COPY mvnw 。
コピー .mvn .mvn

# pom.xml ファイルをコピーします。COPY pom.xml 。

# すべての Maven 依存関係をインポートする RUN ./mvnw dependency:go-offline -B

# プロジェクトのソースコードをコピーします COPY src src

# アプリケーションをパッケージ化します RUN ./mvnw package -DskipTests
実行 mkdir -p target/dependency && (cd target/dependency; jar -xf ../*.jar)

#### アプリケーションを実行できる最小の Docker コンテナを openjdk:8-jre-alpine から設定します

ARG 依存関係 = /app/target/dependency

# ビルドステージからプロジェクトの依存関係をコピーする
コピー --from=build ${DEPENDENCY}/BOOT-INF/lib /app/lib
コピー --from=build ${DEPENDENCY}/META-INF /app/META-INF
コピー --from=build ${DEPENDENCY}/BOOT-INF/classes /app

エントリポイント ["java","-cp","app:app/lib/*","com.xiang.airTicket.AirTicketApplication"]

Docker-compose 統合プロジェクト サービス

spring-boot コンテナの構築が完了したら、 docker-composeを使用してspring-boot、redis、mysqlコンテナを統合できます。具体的なアイデア:

  • 申告事項
  • プロジェクトに統合する必要があるサービスを宣言する

docker-compose.ymlファイル:

バージョン: '3.7'

# サービスを定義する:
 # spring-boot サービス アプリ サーバー:
  建てる:
   context: . #docker-compose.yml を基準にして Dockerfile をビルドするためのパスを設定します
   dockerfile: Dockerファイル
  ポート:
   - "8080:8080" # ローカルポート8080をコンテナポート8080にマップする restart: always
  依存: 
   -db # 依存するサービスを最初に構築する必要があります - redis
  environment: #環境変数を設定します SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/airTicket?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false
   SPRING_DATASOURCE_USERNAME: ルート
   SPRING_DATASOURCE_パスワード: 123456
   SPRING_REDIS.HOST: redis
  ネットワーク: # ネットワーク接続 mysql および redis
   - バックエンド
 デシベル:
  イメージ:mysql:5.6
  ポート:
   - 「3306:3306」
  再起動: 常に
  環境:
   MYSQL_DATABASE: 航空券
   MYSQL_USER: htx
   MYSQL_パスワード: 123456
   MYSQL_ルート_パスワード: 123456
  ボリューム:
   -dbデータ:/var/lib/mysql
  ネットワーク:
   - バックエンド
 レディス:
  画像: redis
  コマンド: [ "redis-server", "--protected-mode", "no" ]
  ホスト名:
   レディス
  ポート:
   - 「6379:6379」
  ネットワーク:
   - バックエンド   
ボリューム:
 dbデータ:
ネットワーク:
 バックエンド:

docker-compose buildを使用してプロジェクト コンテナをビルドします。


docker-compose upを使用してコンテナを起動します。


spring-boot の起動が成功したことを示すログが表示されたら、正常に構成されています。

フォローアップ

今回はバックエンドのみ構築しました。フロントエンドのangular、nginxも構築し、 dockerコマンドで直接アプリケーションを起動してみたいと思います。

参考リンク: Spring Boot、Mysql、React docker compose の例

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Docker Compose 構成ファイルの記述とコマンドの使用例
  • Docker Compose を使用して ElasticSearch 構成プロセスを構築およびデプロイする
  • Docker-compose インストール yml ファイルの設定方法
  • docker compose を使ってワンクリックで分散構成センター Apollo を展開するプロセスの詳細な説明
  • Jenkins の docker-compose デプロイメントと構成に関する詳細なチュートリアル
  • Docker.v19 で Docker Compose オーケストレーション ツールをインストールして構成する方法
  • Linux で docker-compose を使用したソフトウェア構成の詳細な説明
  • Docker Compose 構成ファイルパラメータの詳細な説明

<<:  Vueはページを更新するために3つの方法を使用する

>>:  MySQL マスタースレーブ同期遅延の原因と解決策

推薦する

ゲーム開発におけるサウンド処理にCocosCreatorを使用する方法

目次1. Cocos Creatorでのオーディオ再生の基本1. 基本2. 一般的な方法2. Coc...

CSSはスクロールを許可しながらスクロールバーを非表示にするためにオーバーフローを設定します

CSS は、スクロールを許可しながらスクロール バーを非表示にするために Overflow を設定し...

LinuxテキストエディタVimの詳しい説明

Vim は強力なフルスクリーン テキスト エディターであり、Linux/UNIX で最も一般的に使用...

JavaScript 履歴オブジェクトの説明

目次1. ルートナビゲーション2. 履歴状態管理API (1)ハッシュチェンジイベント(2)ポップス...

Linux で nginx を起動および再起動する方法

Nginx (エンジン x) は、IMAP/POP3/SMTP サービスも提供する高性能 HTTP ...

Amoeba を使用して MySQL データベースの読み取り/書き込み分離を実装する方法の詳細な説明

MySQL には読み取りと書き込みを分離するアーキテクチャが多数あります。Baidu のそれらのほと...

JavaScript の BigIn 関数の共通プロパティをまとめます

目次1. 概要2. 属性1. 数学演算子2. 比較演算子3. ブール演算結論1. 概要BigInt ...

フレームセットを使用してワイドスクリーンを中央に配置するためのヒントを共有する

コードをコピーコードは次のとおりです。 <フレームセット cols="*,1280,...

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

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

Zabbix による VMware Exsi ホストの監視のグラフィカルな手順

1. 仮想化 vcenter に入り、ブラウザでログインし (クライアントは設定する場所を見つけませ...

Mysql5.7 サービスを開始できません。グラフィカル ソリューション チュートリアル

p>「サービス」で手動で起動すると、 コンソールから起動します: 次に、...\MySQL S...

MySQLデータベースのスケジュールバックアップを実装する方法

1. シェルスクリプトを作成する vim バックアップdb.sh 次のようにスクリプトを作成します。...

Firefox で Webdings フォントをサポートする方法

Firefox、Opera、その他のブラウザは Webdings フォントをサポートしていません。回...

MySQL データベース インデックスが B+ ツリーの使用を選択するのはなぜですか?

MySQL データベース インデックスが B+ ツリーを使用する理由をさらに分析する前に、データ構...

Dockerを使用してLaravelおよびVueプロジェクトの開発環境を構築する詳細な説明

この記事では、Docker で構築された Laravel および Vue プロジェクトの開発環境を紹...