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: '3' 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: '%' 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
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 サイトの他の関連記事を参照してください。