前回の記事では、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はポップアップウィンドウをクリックすることでポップアップログインボックスを実装します
Prometheus (プロメテウスとも呼ばれる) 公式サイト: https://prometheu...
目次タグ付きユニオン型を使用した支払い方法の構築タグ付きユニオン型を使用した Redux アクション...
冒頭に書いた以前、Renren で JS ベースのスクリーンショット ソリューションについて説明した...
<br />2 年前に PPK が投稿した素晴らしいブログ記事では、contains()...
MySQL 5.7 を使用すると、Web ターミナル経由でデータベースに中国語の文字を書き込むと文字...
目次Dockerを起動するDockerを停止するPython 呼び出しスクリプト最近、日々のテストで...
目次1. 概要1. スカイウォーキング入門2. スカイウォーキング建築3. スカイウォーキングはどの...
これら 6 つの記事を書いた後、私は少し混乱し始めました。次にどこに書けばいいのか分かりません。ドメ...
目次1. リソースのダウンロード2. ソフトウェアを解凍する2.1 場所を選択する2.2 名前を変更...
Centos7 上で openresty 用の Dockerfile を作成し、ビルドしました。 d...
この記事では、CSS で記事の区切り線を実装するさまざまな方法をまとめています。区切り線はページを美...
持つことの使用法having 句を使用すると、グループ化後にさまざまなデータをフィルター処理できます...
環境の準備1. 環境構築React Native 中国語ウェブサイト2. 開発ツール フロントエンド...
序文ルーティングの管理は、ほとんどのシングルページ アプリケーションにとって不可欠な機能です。 Vu...
この記事では、参考までにVueのファイルのアップロードとダウンロードの具体的なコードを紹介します。具...