前回の記事では、Docker を使用して、コンパイルされた jar パッケージをイメージに組み込む Spring Boot アプリケーションを構築しました。 この記事では、Spring-Boot をデータベースとともに Docker サービスのセットとして実行します。 ここでは、自分の操作を記録しているだけです。実行コード全体については、「参考資料」の参考資料 1 の内容を参照してください。 主な手順:
シンプルなSpringbootアプリケーションを構築する サイトにアクセスする IP アドレスの数をカウントする Web アプリケーションを作成します。 そしてそれを MySQL データベースに保存します。ここでは、jpa を使用してデータベースにアクセスします。 頼る <親> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <バージョン>2.0.0.RELEASE</バージョン> </親> web、jpa、mysql、tset ライブラリの依存関係 <依存関係> <依存関係> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </依存関係> <依存関係> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </依存関係> <依存関係> <グループID>mysql</グループID> <artifactId>mysql-コネクタ-java</artifactId> </依存関係> <依存関係> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>テスト</scope> </依存関係> </依存関係> 設定ファイル spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=ルート spring.datasource.driver クラス名 = com.mysql.jdbc.Driver spring.jpa.properties.hibernate.hbm2ddl.auto=更新 spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect spring.jpa.show-sql=true コアコード @レストコントローラ パブリッククラスVisitorController{ オートワイヤード プライベートVisitorRepositoryリポジトリ。 @リクエストマッピング("/") パブリック文字列インデックス(HttpServletRequest リクエスト) { 文字列 ip = request.getHeader("X-Real-IP"); if(ip== null || "".equals(ip)) { ip = リクエスト.getRemoteAddr(); } 訪問者 visitor = repository.findByIp(ip); if(訪問者 == null) { 訪問者 = 新しい訪問者(); 訪問者IPを設定します。 訪問者.setTimes(1L); } それ以外 { 訪問者.setTimes(訪問者.getTimes()+1); } リポジトリ.save(訪問者); "ip:"+visitor.getIp()+" "+visitor.getTimes()+" 回を返します。"; } } エンティティクラス @実在物 パブリッククラスVisitor{ @ID @生成された値 プライベートな Long ID; @列(nullable=false) プライベート 長時間; @列(nullable=false) プライベート文字列 ip; // get、set メソッドは省略} リポジトリ レイヤー コードは、jpa 関連コンテンツを参照します。 ローカル データベースが開かれ、パスワードが上記で設定されます。mvn spring-boot:run で実行すると、IP の数が表示されます。IP の数は、統計ごとに自動的に増加します。 Docker Compose 設定ファイル 次のように新しい docker-compose.yaml ファイルを作成します。 バージョン: '3' サービス: nginx: コンテナ名: v-nginx イメージ: nginx:1.13 再起動: 常に ポート: - 80:80 -443:443 ボリューム: - ./nginx/conf.d:/etc/nginx/conf.d マイスク: コンテナ名: v-mysql イメージ:mysql/mysql-server:5.7 環境: MYSQL_DATABASE: テスト MYSQL_ROOT_PASSWORD: ルート MYSQL_ROOT_HOST: '%' ポート: - 「3306:3306」 ボリューム: - ./mysqldata:/var/lib/mysql 再起動: 常に アプリ: 再起動: 常に ビルド: ./app 作業ディレクトリ: /app ボリューム: - ./app:/app - ~/.m2:/root/.m2 さらす: - 「8080」 依存: - nginx -MySQLについて コマンド: mvn clean spring-boot:run -Dspring-boot.run.profiles=docker 主にこの設定ファイルについて説明し、ファイルシステムに関連する設定を追加します。 services には、nginx、mysql、app の 3 つのサービスがあります。 nginx でのボリューム設定の目的は、コンテナ内のデフォルトの nginx 設定ファイルに書き込んだ nginx 設定ファイルを直接上書きすることです。 MySQL でのボリューム構成の目的は、MySQL データ ファイルをローカルの mysqldata ディレクトリにマップすることです。コンテナを削除してもデータは残ります。 アプリの下のボリューム構成の機能: 最初の行はコード ファイルをコンテナーにマッピングします。 2 行目は、Maven リポジトリ ファイルをローカル リポジトリ ファイルにマッピングします。コンテナを削除した後、依存パッケージを再度ダウンロードせずに再度ビルドできます。 このコマンドは、Docker プロファイルを使用して、コンテナー内でプロジェクトをコンパイルして実行します。 ファイルを追加する必要があります
サーバー{ 聞く 80; 文字セット utf-8; access_log オフ; 位置 / { proxy_pass http://app:8080; proxy_set_header ホスト $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; } 場所 /static { access_log オフ; 有効期限は30日です。 エイリアス /app/static; } } デプロイメント検証 ファイル全体をサーバーにコピーし、 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: RedisとMySQLの違いを簡単に説明してください
>>: jsはポップアップウィンドウをクリックすることでポップアップログインボックスを実装します
これは主に CSS スタイルのコントロールと META タグです。コードをコピーコードは次のとおりで...
ここには複数の Tomcat があります。それらを同時に使用する場合は、ポート番号を別の番号に変更す...
この記事では、Dockerを使用してMySQLデータベースとリモートアクセス構成をデプロイする方法を...
(1)実験環境youxi1 192.168.5.101 ロードバランサーyouxi2 192.168...
目次序文アイデアの起動速度Tomcat ログが文字化けしている序文Idea を再インストールしたので...
el-dialogをコンポーネントとしてカプセル化するelement-ui を使用する場合、ポップア...
mysql 行から列へ、列から行へ難しい文章ではないので、詳しく説明はしません。文章を読むときは、一...
注:この記事は他の人によって翻訳されていますが、考えるべき点が多く、理解しにくい点もあると感じていま...
フォーム入力ボックスの入力をdisable属性に設定して送信すると、入力ボックスの値を取得できなくな...
1 QPS 計算 (1 秒あたりのクエリ数) MyISAMエンジンベースのDBの場合 MySQL&g...
序文コア機能のデフォルトの組み込みディレクティブ (v-model および v-show) に加えて...
予備的注釈1.Vue2.xとVue3.xの違い: Vue 3.x にはヘルパー関数はありません。 V...
コンテナの場合、最も単純なヘルスチェックはプロセス レベルのヘルスチェックであり、プロセスが稼働して...
序文Linux システムはシステム サービス crond によって制御されます。 Linux システ...
目次1. まず最初のリンクを取得する2. ブラウザでこのリンクを開いてください3. アドレスを開くと...