Docker で Java 8 Spring Boot アプリケーションを開発する方法

Docker で Java 8 Spring Boot アプリケーションを開発する方法

この記事では、ローカル マシンに Java 8 をインストールせずに、Java 8 を使用して簡単な Spring Web アプリケーションを開発および実行する方法を説明します。

Python 開発者は仮想環境を使用して、プロジェクトごとに個別の環境を作成および管理します。各プロジェクトでは、異なるバージョンの Python を使用して、Python の依存関係を実行、保存、解決します。 Java や他の多くのテクノロジーは仮想環境の概念をサポートしていません。この時点で、Docker が役に立ちます。

Docker は仮想化プラットフォームです。基本情報とインストール ガイドは、Docker の公式 Web サイトから入手できます。

Docker Toolbox をインストールしたら、サンプル アプリケーションに必要な Java 8 や MySQL をインストールする必要はありません。

まず、 Docker-composeファイルを確認しましょう。

バージョン: '2'
サービス:
 スプリングアプリケーションサーバー:
  建てる:
   コンテクスト: 。 
   dockerfile: springapp.dockerfile
  ポート: 
   - 「8080:8080」
  ネットワーク:
   - ネットスプリングDB
  ボリューム:
   - .:/vol/開発
  依存:
   -mysqldbサーバー
 mysqldbサーバー:
  建てる:
   コンテクスト: 。 
   dockerfile: mysqldb.dockerfile
  ポート:
   - 「3306:3306」
  ネットワーク:
   - ネットスプリングDB
  環境:
   MYSQL_DATABASE: テストデータベース
   MYSQL_USER: ユーザー
   MYSQL_PASSWORD: パスワード
   MYSQL_ROOT_PASSWORD: ルートパスワード
  コンテナ名: mysqldbserver
ネットワーク:
 ネットスプリングDB:
  ドライバー: ブリッジ

「net-spring-db」にはそれぞれ 2 台のサーバーがあります。最初のものは「springappserver」と呼ばれ、 springapp.dockerfileを使用して構成されます。 2 番目は mysqldbserver という名前で、 mysqldb.dockerfileを使用して構成されます。

それでは、springapp.dockerfile を見てみましょう。

#
# Java 1.8 と Maven Dockerfile
#
#
# ベースイメージをプルします。
java:8より
# メンテナー
メンテナー Dursun KOC "[email protected]"
# パッケージを更新し、Maven をインストールします
走る \
 エクスポート DEBIAN_FRONTEND=非対話型 && \
 sed -i 's/# \(.*multiverse$\)/\1/g' /etc/apt/sources.list && \
 apt-get update && \
 apt-get -y アップグレード && \
 apt-get install -y vim wget curl maven
# ボリュームをアタッチする
巻 /vol/開発
# 作業ディレクトリを作成
mkdir -p /vol/development を実行します。
ワークディレクトリ /vol/development
# maven 実行
CMD ["mvn", "clean", "package", "exec:java"]

Docker ファイルは、Docker Hub の Java 8 イメージを継承する Docker イメージを構成します。 Java 8 イメージに vim、wget、curl、Maven をインストールし、既存のプロジェクト コードを格納するためのボリュームを設定しました。最後に、Maven コマンドを実行してアプリケーションを実行します。

それでは、mysqldb.dockerfile を確認しましょう。

mysql/mysql-server から
メンテナー Dursun KOC <[email protected]>
# データベース初期化スクリプトをコピーします: 
# /docker-entrypoint-initdb.d の内容は、mysqld の起動時に実行されます
mysql/<yyyy-MM-dd> /docker-entrypoint-initdb.d/ を追加します。

Docker ファイルは、Docker Hub の MySQL/mysql-server イメージを継承する Docker イメージを構成します。 MySQL イメージに db-schema 作成スクリプトを配置しました。それらは MySQL フォルダー内にあります。このフォルダーには、「person」テーブルを作成するための SQL ファイル (data.sql) があります。

それでは、アプリケーションの構造を見てみましょう。

アプリケーションはsrc / com / turkcell / softlab / Application.javaファイルで起動され、唯一のコントローラーは PersonController (src/com/turkcell/softlab/controller/PersonController.java) です。

簡単なコマンドでプロジェクト全体を実行できます:

docker-compose up -d

テストするには、ローカル コンピューターで次の 2 つのコマンドを使用します。

• 新しい人物を作成します:

curl -H "Content-Type: application/json" -X POST -d "{\"first\":\"Mustafa\",\"last\":\"KOÇ\",\"dateofbirth\"381110400000,\"placeofbirth\":\"Erzincan\"}" "http://192.168.99.100:8080/people"

• データベース内の既存の人物の一覧を表示します。

curl -H "コンテンツタイプ: application/json" -X GET "http://192.168.99.100:8080/people"

要約する

上記は、Docker で Java 8 Spring Boot アプリケーションを開発するために私が紹介した方法です。お役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • DockerでJavaプログラムを起動する方法
  • Dockerを使用してシンプルなJava開発およびコンパイル環境を構築する方法の詳細な説明
  • Dockerを使用してJava環境を構築する手順
  • Javaデータ開発補助ツールDockerと一般プログラムの使い方

<<:  JSはモバイル端末の画面を1つずつ上下にスライドさせる機能を実装します

>>:  MySQL binlog を開く手順

推薦する

Mysqlの自動増分IDについて知らないことがあるかもしれません

導入: MySQL を使用してテーブルを作成する場合、通常は自動インクリメント フィールド (AUT...

CSS グラデーション効果の概要 (線形グラデーションと放射状グラデーション)

線形グラデーション 背景画像: linear-gradient(方向、開始色、中間色1、中間色2、....

VMware Workstation Pro が Win10 アップデートにより開けなくなる問題の解決方法

今夜の夕食後にノートパソコンの電源を入れたところ、問題が発生しました。通常、コンピューターがスリープ...

Q&A: XML と HTML の違い

Q: xml と html の違いがわかりません。違いは何ですか? A: XMLと HTML の違い...

mysql のファイル mysql-bin.000001 とは何ですか? 削除できますか?

ポートを使用して MySQL をインストールした後、しばらくすると /var の容量が不足しているこ...

HTML メタビューポート属性の説明

ビューポートとはモバイル ブラウザは、Web ページを仮想の「ウィンドウ」(ビューポート) に配置し...

Docker を使用して ELK 環境を迅速にデプロイする方法の詳細な説明 (最新バージョン 5.5.1)

Linux サーバーに Docker をインストールした後、関連する公式 Docker イメージを...

Windows で MySQL インストーラーを使用して MySQL サービスをインストールするチュートリアル図

MYSQL は、MYSQL サービスやその他のコンポーネントをインストールするためのインストーラ方式...

Tomcat マルチレイヤーコンテナの設計に関する簡単な説明

目次コンテナ階層サーブレットの検索を要求するプロセス仕組みTomcat のコンテナは Servlet...

vue+rem カスタムカルーセル効果

vue+remを使用したカスタムカルーセルチャートの実装は参考までに。具体的な内容は以下のとおりです...

CSS 要素の非表示の原則と display:none および visibility:hidden

1. CSS 要素の非表示<br />CSS では、要素を非表示にする (つまり、画面の...

Jsモジュール化の動作原理とソリューションの詳細な説明

目次1. モジュラーコンセプト2. モジュール化3. モジュール化プロセス1. 通常の記述(グローバ...

MySQL のロックに関する問題

ロックの分類:データ操作の粒度から:テーブルロック:操作時にテーブル全体がロックされます。行ロック:...

ウェブページに埋め込まれた Flash と IE、FF、Maxthon の互換性の問題

いろいろ苦労した後、インターネットで検索したり、以前の会社のプロジェクトを探したり、他の人のプロジェ...

CSS の vertical-align プロパティとベースラインの問題に関する深い理解

vertical-align属性は、主にインライン要素の配置を変更するために使用されます。インライン...