前回の記事では、docker compose を使用して FastDfs ファイル サーバーをインストールする詳細な例を紹介しました。 今日は、docker compose を使って fastDFS ファイルサーバーを構築する方法を紹介します。詳細は以下の通りです。 プラットフォーム: Mac M1 注: IPアドレスについて docker ネットワーク モードに関しては、上記の記事で docker コンテナを起動するときにホスト モードを使用すると、コンテナは独立したネットワーク名前空間を取得せず、ホストとネットワーク名前空間を共有します。コンテナは独自のネットワーク カードを仮想化したり、独自の IP を構成したりはせず、ホストの IP とポートを使用します。ただし、ファイル システムやプロセス リストなど、コンテナーの他の側面は、ホスト マシンから分離されたままです。 問題は、ホスト マシンの IP とポートを使用し、構成ファイルで IP として ファイルディレクトリ ├── docker-compose.yaml ├── nginx │ └── nginx.conf ├── ストレージ │ └── データ └── トラッカー │ └── 会議 │ └── クライアント.conf └── ストアパス ./docker-compose.yaml バージョン: "2" サービス: fastdfsトラッカー: ホスト名: fastdfs-tracker コンテナ名: fastdfs-tracker 画像: season/fastdfs:1.2 ネットワークモード: "ホスト" コマンド: トラッカー ボリューム: - ./トラッカー/データ:/fastdfs/トラッカー/データ - ./tracker/conf:/etc/fdfs fastdfs ストレージ: ホスト名: fastdfs-storage コンテナ名: fastdfs-storage 画像: season/fastdfs:1.2 ネットワークモード: "ホスト" ボリューム: - ./ストレージ/データ:/fastdfs/ストレージ/データ - ./ストアパス:/fastdfs/ストアパス 環境: - トラッカーサーバー=192.168.64.2:22122 コマンド: ストレージ 依存: - fastdfsトラッカー fastdfs-nginx: ホスト名: fastdfs-nginx コンテナ名: fastdfs-nginx 画像: season/fastdfs:1.2 ネットワークモード: "ホスト" ボリューム: - ./nginx/nginx.conf:/etc/nginx/conf/nginx.conf - ./ストアパス:/fastdfs/ストアパス 環境: - トラッカーサーバー=192.168.64.2:22122 コマンド: nginx ./tracker/conf/クライアント.conf # 接続タイムアウト(秒) # デフォルト値は30秒です 接続タイムアウト=30 # ネットワークタイムアウト(秒) # デフォルト値は30秒です ネットワークタイムアウト=60 # ログファイルを保存する基本パス ベースパス=/fastdfs/クライアント # tracker_serverは複数回出現する可能性があり、tracker_serverの形式は # "host:port"、host はホスト名または IP アドレスです # ここで IP を変更する必要があります トラッカーサーバー=192.168.64.2:22122 #syslog と同じ標準ログ レベル、大文字と小文字を区別しない、値のリスト: ### 緊急の場合は emerg ### 警告 ### クリティカルの場合はcrit ### エラー ### 警告に対する警告 ### 知らせ ### 情報 ### デバッグ ログレベル=情報 # 接続プールを使用する場合 # デフォルト値はfalseです # V4.05以降 use_connection_pool = false # アイドル時間がこの時間を超える接続は閉じられます # 単位: 秒 # デフォルト値は3600です # V4.05以降 接続プールの最大アイドル時間 = 3600 # トラッカーサーバーからFastDFSパラメータをロードする場合 # V4.05以降 # デフォルト値はfalseです load_fdfs_parameters_from_tracker=false # IPアドレスの代わりにストレージIDを使用する場合 # tracker.confと同じ # load_fdfs_parameters_from_tracker が false の場合にのみ有効 # デフォルト値はfalseです # V4.05以降 use_storage_id = 偽 # ストレージIDファイル名を指定します。相対パスまたは絶対パスを使用できます。 # tracker.confと同じ # load_fdfs_parameters_from_tracker が false の場合にのみ有効 # V4.05以降 ストレージIDファイル名 = ストレージID.conf #HTTP設定 http.tracker_server_port=80 #HTTPのその他の設定を含めるには「#include」ディレクティブを使用します ##http.conf を含める ./nginx/nginx.conf #ユーザーnobody; ワーカープロセス 1; #error_log ログ/error.log; #error_log ログ/error.log 通知; #error_log ログ/error.log 情報; #pid ログ/nginx.pid; イベント { ワーカー接続 1024; } http { mime.types を含めます。 デフォルトタイプ アプリケーション/オクテットストリーム; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log ログ/access.log メイン; ファイル送信オン; #tcp_nopush オン; #キープアライブタイムアウト 0; キープアライブタイムアウト65; #gzip オン; サーバー{ 聞く 9800; server_name ローカルホスト; #文字セット koi8-r; #access_log ログ/host.access.log メイン; # パーツの位置を変更する / { ルート /fastdfs/store_path/data; ngx_fastdfs_モジュール; } #エラーページ 404 /404.html; # サーバーのエラーページを静的ページ /50x.html にリダイレクトします # エラーページ 500 502 503 504 /50x.html; 場所 = /50x.html { ルートhtml; } } } SpringBootはfastDFSを統合する 依存関係の追加 <依存関係> <groupId>com.github.tobato</groupId> <artifactId>fastdfs クライアント</artifactId> <バージョン>1.27.2</バージョン> </依存関係> アプリケーション.yaml # 分散ファイルシステム構成 fdfs: #自分の IP に合わせて IP を変更します: 192.168.64.2 #ソケット接続タイムアウト soTimeout: 1500 接続タイムアウト: 600 #複数のトラッカーリストをサポート: - ${fdfs.ip}:22122 # fastDFS の nginx の IP とポート # IDEAはhttpsを使用するよう促します。 # nginx の SSL 設定は次の場所に移動してください: ウェブサーバーのURL: http://${fdfs.ip}:9800/ FastDFSConfig.java @構成 // FastDFS-Client コンポーネントをインポートします @Import(FdfsClientConfig.class) // 繰り返しの JMX Bean 登録の問題を解決します @EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING) パブリックアスペクトFastDFSConfig { } FastDFSUtil.java @成分 パブリッククラスFastDFSUtil { @リソース プライベート FastFileStorageClient fastFileStorageClient; @リソース プライベート FdfsWebServer fdfsWebServer; パブリック String uploadFile(MultipartFile ファイル) は IOException をスローします { StorePath storePath = fastFileStorageClient.uploadFile(file.getInputStream(), file.getSize(), FilenameUtils.getExtension(file.getOriginalFilename()), null); 文字列 fullPath = storePath.getFullPath(); フルパスを取得します。 fullPath を返します。 } パブリック文字列 uploadFile(ファイル ファイル) { 試す { FileInputStream 入力ストリーム = 新しい FileInputStream(ファイル); StorePath storePath = fastFileStorageClient.uploadFile(inputStream、file.length()、FilenameUtils.getExtension(file.getName())、null); storePath.getFullPath() を返します。 } キャッチ (例外 e) { e.printStackTrace(); null を返します。 } } パブリック byte[] downloadFile(String filePath) { StorePath storePath = StorePath.parseFromUrl(filePath); fastFileStorageClient.downloadFile(storePath.getGroup(), storePath.getPath(), 新しい DownloadByteArray()) を返します。 } パブリックブール値deleteFile(文字列filePath) { StringUtils.isEmpty(filePath) の場合 { false を返します。 } 試す { StorePath storePath = StorePath.parseFromUrl(filePath); fastFileStorageClient.deleteFile(storePath.getGroup(), storePath.getPath()); } キャッチ (例外 e) { e.printStackTrace(); false を返します。 } true を返します。 } /** * パッケージファイルの完全な URL アドレス* * @param パス * @戻る */ パブリック文字列 getResAccessUrl(文字列パス) { fdfsWebServer.getWebServerUrl() + パスを返します。 } } FastDFSController.java @レストコントローラ @RequestMapping("/fast-dfs") パブリッククラスFastDFSController{ /** * @param ファイル * @戻る * @throwsIOException 例外をスローします */ @PostMapping("") @トランザクション public void uploadFile(MultipartFile file, String cuisineId) は IOException をスローします { 文字列 s = fastDfsUtil.uploadFile(ファイル); 文字列 resAccessUrl = fastDfsUtil.getResAccessUrl(s); } /** * @param レスポンス * @throwsIOException 例外をスローします */ @GetMapping("") パブリック void downloadFile(String filePath, HttpServletResponse response) は IOException をスローします { byte[] バイト = fastDfsUtil.downloadFile(filePath); 文字列[] split = filePath.split("/"); 文字列 fileName = split[split.length - 1]; // 強制ダウンロードを開かないように設定 response.setContentType("application/force-download"); ファイル名 = URLEncoder.encode(ファイル名、StandardCharsets.UTF_8); response.setHeader("Content-Disposition", "attachment;filename=" + fileName); IOUtils.write(バイト、response.getOutputStream()); } /** * ストリーミングモードでビデオを再生します。最初から最後までしか視聴できません。すでに視聴したコンテンツを手動でクリックして視聴することはできません。* @param filePath * @param レスポンス * @throwsIOException 例外をスローします */ @GetMapping("/play") パブリック void streamMedia(String filePath, HttpServletResponse レスポンス) は IOException をスローします { byte[] バイト = fastDfsUtil.downloadFile(filePath); IOUtils.copy(新しい ByteArrayInputStream(bytes)、response.getOutputStream()); レスポンスをフラッシュバッファ(); } } docker compose を使用して fastDFS ファイル サーバーを構築する方法についての記事はこれで終わりです。docker compose を使用して fastDFS を構築する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQL5.7 シングルインスタンス自動起動サービスの設定プロセス
>>: フォームの「Enter」、「Submit」、「Enter != Submit」を削除する方法
コードをコピーコードは次のとおりです。 <!-- ブラウザがローカル キャッシュからページにア...
目次デバウンススロットル要約するデバウンス定義: スクロール イベントなど、短時間に連続してトリガー...
MacBookにpython3.7.0をインストールする詳細な手順は、参考までに記録されています。具...
序文ジェネレーター関数は、async/await が導入される前から JavaScript に存在し...
1. はじめにバージョン 5.0 以降でサポートされています。特定の機能を実行するための SQL ス...
1. 公式ウェブサイト www.mysql.com にアクセスし、ダウンロードを選択します。 2. ...
目次I. 概要2. 従来の多段階イメージ構築3. Buildkitを使用してイメージをビルドする4....
コードは次のようになります。 <!DOCTYPE html> <html> ...
目次1. 初心者が陥りがちな間違い2. Iteratorのremove()メソッドを使用する3. f...
少し前に、「ORACLE でコミットされていないトランザクションの SQL ステートメントを見つける...
目次Vue.jsにおける属性とプロパティ値および関連する処理として属性とプロパティの概念属性とプロパ...
目次概要静的型チェックコードスタイルチェック(Linter)パッケージマネージャーモジュールローダー...
目次プロジェクトにmockjsをインストールするVueプロジェクトでmockjsを使用する基本的なプ...
各ブラウザの select タグのプロパティと各ブラウザのサポートが多少異なるため、各ブラウザでの選...
問題を解決するBootstrap は、次の問題を解決する CSS フレームワークです。デバイス間での...