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 を開く手順

推薦する

WeChatアプレットは日付と時刻に基づいた並べ替え機能を実装

最近、小さなプログラム プロジェクトを引き継いだのですが、リストを日付と時刻で並べ替えるという要件が...

MySQL 5.7 mysql コマンドラインクライアントの使用コマンドの詳細

MySQL 5.7コマンドを使用するMySQLコマンドラインクライアント1. パスワードを入力してく...

XshellがvirtualBox仮想マシンに接続できない問題の解決策

まず、VirtualBox仮想マシンのネットワーク設定モードについて説明します。NAT+ホストオンリ...

MySQL データベース操作 (作成、選択、削除)

MySQL データベースの作成MySQL サービスにログインしたら、create コマンドを使用し...

MySQLの日付文字列タイムスタンプ変換の詳細な説明

時刻、文字列、タイムスタンプ間の変換は、日常生活でよく使用されます。よく使用されますが、私は使用する...

HTMLはシンプルで美しいログインページを作成します

まずは見てみましょう。 HTML ソースコード: XML/HTML コードコンテンツをクリップボード...

MySQL で null を置き換える IFNULL() および COALESCE() 関数の詳細な説明

MySQLではisnull()関数をnull値の代わりとして使用することはできません。次のように:ま...

Vue-cli を使用して Vue プロジェクトを構築する手順の詳細な説明

まず、Vue-cli をインストールする必要があります。 npm インストール -g vue-cli...

Dockerコンテナでの静的ウェブサイトレイアウトの実装

サーバーの配置数日間無料で使用できるクラウドサーバー(Alibaba Cloud、Huawei Cl...

nginxカスタム変数と組み込み定義済み変数の使用

概要Nginx では変数を使用して設定を簡素化し、設定の柔軟性を向上させることができます。すべての変...

Selenium+testng を使用して Docker で Web 自動化を実現する方法

序文長い間さまざまな資料を読んで、ついに selenium+testng のパラメータ化の問題を解決...

react+antd.3x は IP 入力ボックスを実装します

この記事では、IP入力ボックスを実装するための react+antd.3x の具体的なコードを参考ま...

HTMLを圧縮しない理由はいくつかある

理由は簡単です。 HTML ドキュメントでは、複数の空白文字は 1 つの空白文字と同等です。つまり、...

HTML ウェブページのブラウザタイトルバーに小さなアイコンを表示する方法

この効果と同様に、方法も非常に簡単です。ヘッダーに次のように記述します: <link rel=...

TypeScript 列挙型

目次1. 概要2. デジタル列挙2.1 逆マッピング3. 文字列の列挙4. const列挙5. まと...