ホームページ >データベース >mysql チュートリアル >dockercompose を使用して springboot-mysql-nginx アプリケーションを構築する方法

dockercompose を使用して springboot-mysql-nginx アプリケーションを構築する方法

PHPz
PHPz転載
2023-05-28 08:58:051229ブラウズ

docker を使用して Spring-Boot アプリケーションを構築すると、コンパイルされた jar パッケージがイメージに構築されます。

この記事では、Spring-Boot を Docker サービスのセットとしてデータベースとともに実行します。

ここでは、自分の操作を記録するだけです。完全な実行コードについては、「リファレンス」の引用 1 の内容を参照してください。
(mysql マッピング ディレクトリを変更してリモート IP を取得する方法)

主な手順:

  • 単純な Springboot アプリケーションを構築する

  • docker 下のサポートをアプリケーションに追加する

  • dockercompose 構成ファイルを作成する

  • 実際の操作

単純な Springboot アプリケーションを構築する

Web アプリケーションを作成し、サイトへの IP アクセス数をカウントします。

そして、mysql データベースに保存されます。ここでは、jpa を使用してデータベースにアクセスします。

依存関係

<parent>
  <groupid>org.springframework.boot</groupid>
  <artifactid>spring-boot-starter-parent</artifactid>
  <version>2.0.0.release</version>
</parent>

Web、jpa、mysql、tsetライブラリの依存関係

<dependencies>
  <dependency>
    <groupid>org.springframework.boot</groupid>
    <artifactid>spring-boot-starter-web</artifactid>
  </dependency>
  <dependency>
    <groupid>org.springframework.boot</groupid>
    <artifactid>spring-boot-starter-data-jpa</artifactid>
  </dependency>
  <dependency>
    <groupid>mysql</groupid>
    <artifactid>mysql-connector-java</artifactid>
  </dependency>
  <dependency>
    <groupid>org.springframework.boot</groupid>
    <artifactid>spring-boot-starter-test</artifactid>
    <scope>test</scope>
  </dependency>
</dependencies>

設定ファイル

spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.driver
spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.mysql5innodbdialect
spring.jpa.show-sql=true

コアコード

@restcontroller
public class visitorcontroller{
 @autowired
 private visitorrepository repository;
 @requestmapping("/")
 public string index(httpservletrequest request)
 {
 string ip= request.getheader("x-real-ip");
 if(ip== null || "".equals(ip))
 {
  ip = request.getremoteaddr();
 }
 visitor visitor = repository.findbyip(ip);
 if(visitor == null)
 {
  visitor = new visitor();
  visitor.setip(ip);
  visitor.settimes(1l);
 }
 else
 {
  visitor.settimes(visitor.gettimes()+1);
 }
 repository.save(visitor);
 return "ip:"+visitor.getip()+" "+visitor.gettimes()+" times.";
 }
}

エンティティクラス

@entity
public class visitor {
 @id
 @generatedvalue
 private long id;
 @column(nullable=false)
 private long times;
 @column(nullable=false)
 private string ip;
 // get,set 方法略
}

リポジトリ層コードはjpa関連コンテンツを参照します。

ローカル データベースが開かれ、パスワードは上記の構成のものです。mvn spring-boot:run を使用して実行すると、IP の数が表示され、統計ごとに増加します。

dockercompose 設定ファイル

次のように、新しい docker-compose.yaml ファイルを作成します。

version: &#39;3&#39;
services:
 nginx:
  container_name: v-nginx
  image: nginx:1.13
  restart: always
  ports:
  - 80:80
  - 443:443
  volumes:
  - ./nginx/conf.d:/etc/nginx/conf.d
 mysql:
  container_name: v-mysql
  image: mysql/mysql-server:5.7
  environment:
  mysql_database: test
  mysql_root_password: root
  mysql_root_host: &#39;%&#39;
  ports:
  - "3306:3306"
  volumes:
  - ./mysqldata:/var/lib/mysql
  restart: always
  
 app:
  restart: always
  build: ./app
  working_dir: /app
  volumes:
   - ./app:/app
   - ~/.m2:/root/.m2
  expose:
   - "8080"
  depends_on:
   - nginx
   - mysql
  command: mvn clean spring-boot:run -dspring-boot.run.profiles=docker

この設定ファイルを中心に説明します。関連する構成をファイル システムに追加します。

サービス nginx、mysql、app の下に 3 つのサービスがあります。
images は画像の使用を指定します。 nginx と mysql は Docker ウェアハウスから直接取得されます。
アプリではイメージは指定されていませんが、dockerfile が配置されているディレクトリは build で指定されています。
volumes は、ローカル ディレクトリ内のファイルとコンテナーのターゲット アドレス間のマッピングを指定します。
environment はコンテナに必要な環境変数を構成します
ports はローカルとコンテナの間のマッピング ポートを構成します (ローカル ポートが前、コンテナ ポートが後ろになる)

ボリュームの役割ngixn での設定: 作成した nginx 設定ファイルは、コンテナ内のデフォルトの nginx 設定ファイルを直接上書きします。

mysql でのボリューム構成の役割: mysql データ ファイルをローカルの mysqldata ディレクトリにマップします。コンテナーが削除されても、データはまだ存在します。

アプリの下のボリューム構成の役割: 最初の行は、コード ファイルをコンテナーにマップすることです。 2 行目は、Maven ウェアハウス ファイルをローカルにマップします。コンテナーを削除した後、依存関係パッケージを再ダウンロードせずにコンテナーを再度ビルドします。

コマンド: mvn clean spring-boot:run -dspring-boot.run.profiles=docker

コマンドは、プロジェクトをコンパイルして実行します。コンテナーの場合は、Docker プロファイルを使用します。

したがって、追加するファイル

  • dockerfile: 新しいファイルを作成し、maven:3.5-jdk-8

  • # からの行を追加します。
  • # #docker プロファイル: application.properties を application-docker.properties にコピーし、application-docker.properties のデータベース接続アドレスを jdbc:mysql://mysql:3306/test に変更します。

  • nginx 設定ファイル

  • server {
      listen 80;
      charset utf-8;
      access_log off;
      location / {
        proxy_pass http://app:8080;
        proxy_set_header host $host:$server_port;
        proxy_set_header x-forwarded-host $server_name;
        proxy_set_header x-real-ip $remote_addr;
        proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
      }
      location /static {
        access_log  off;
        expires   30d;
        alias /app/static;
      }
    }

デプロイメントの検証

ファイル全体をコピーしますこれをサーバーにコピーし、

docker-compose up を使用して実行します。

以上がdockercompose を使用して springboot-mysql-nginx アプリケーションを構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。