最近、メンバーがテストできるようにプロジェクトをパッケージ化する必要がありますが、パッケージ化された操作は開発に影響を与えます。そのため、 元のプロジェクトが大きすぎたため、大規模なソフトウェア エンジニアリング実験で試してみることにしました。大規模なソフトウェア エンジニアリング実験では、 docker-compose
アプリケーション コンテナは
サービスは必要な spring-bootをビルドする
#### 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 コンテナの構築が完了したら、
バージョン: '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データ: ネットワーク: バックエンド: spring-boot の起動が成功したことを示すログが表示されたら、正常に構成されています。 フォローアップ 今回はバックエンドのみ構築しました。フロントエンドの 参考リンク: Spring Boot、Mysql、React docker compose の例 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
MySQL Workbench - モデリングおよび設計ツール1. モデルは、最も効果的で高性能なデ...
Hexo は Windows 10 でカスタムドメイン名を GitHub にバインドしますまずドメイ...
runlike を使用してコンテナの docker run 起動パラメータを表示します。 pipを...
MySQL タイム ブラインド インジェクションの 5 つの遅延方法 (PWNHUB の予期しない解...
目次1. 2 つの setState を何回呼び出すのですか? 2. 2 つの setState の...
目次プロトタイプチェーン図プロトタイピングに必須の知識プロトタイププロパティ(プロトタイプを表示) ...
<textarea></textarea> は、複数行を入力できるテキスト ...
HTML の一般的なコメント: <!--XXXXXXXX--> (XXXXXXXX はコ...
目次SaltstackがZabbixサービスを導入httpd、mysql、phpをインストールするh...
目次概要問題の説明循環リンクリスト順序付き配列数学的再帰要約する概要ジョセフ・リング問題は、ジョセフ...
ウェブサイトのアクセス速度を向上させるための徹底的な最適化に関するヒント。ウェブサイトのアクセス速度...
場合によっては、特定の条件に基づいて Web ページ内の HTML 要素を表示するか非表示にするかを...
HTML ハイパーテキスト ドキュメントの基本構造は、ドキュメント ヘッダーとドキュメント本体の 2...
ジェネレータとは何ですか?ジェネレーターは関数内で実行されるコードです。値を返した後、一時停止し、呼...
MySQL は人気のオープンソースデータベース管理システムとして多くのユーザーが利用しています。デー...