操作
機能 #360
未完了claude-searchサービスの現状調査と改善
ステータス:
解決
優先度:
高め
担当者:
-
開始日:
2025-06-07
期日:
進捗率:
0%
予定工数:
説明
概要¶
VPS-ROOT環境でのclaude-searchサービスの現状調査と問題点の改善
現状調査結果¶
1. サービス構成¶
-
場所:
/root/claude-search-system/
-
コンポーネント:
- PostgreSQLデータベース (claude-search-db)
- FastAPI (claude-search-api)
- Nginx UI (claude-search-ui, claude-search-web)
2. 実行状態¶
- claude-search-web: 稼働中 (healthy)
- claude-search-api: 稼働中だが unhealthy状態
- claude-search-db: 稼働中 (healthy)
- claude-search-ui: 稼働中
3. 問題点¶
- APIヘルスチェック失敗: claude-search-apiがunhealthy状態
-
500エラー:
/api/v2/search
エンドポイントで内部エラー発生 - 重複コンテナ: UIコンテナが2つ存在(claude-search-ui, claude-search-web)
- Nginx設定の不整合: claude.call2arm.comがIPアドレス直接指定
4. 必要な改善作業¶
- APIのエラー原因調査と修正
- 重複コンテナの整理
- Nginx設定をコンテナ名ベースに修正
- ヘルスチェックの改善
- ログ分析とエラー対応
影響範囲¶
- claude.call2arm.comでのサービス提供
- Claude Desktop連携機能
Redmine Admin さんが20日前に更新
調査完了報告¶
問題の根本原因を特定¶
-
SQLクエリエラー: main.py 33行目でプレースホルダー$1が欠落
WHERE title LIKE LIMIT 10 # 現状(エラー) WHERE title LIKE $1 LIMIT 10 # 修正後
-
データベース接続: ハードコードされたコンテナID使用
-
重複コンテナ: UIコンテナが2つ存在
-
Nginx設定: IPアドレス直接指定
修正計画を立案¶
詳細な修正計画をチケット#361として起票しました。
推定作業時間¶
- 緊急修正: 35分(SQLクエリとDB接続修正)
- 全体修正: 約3時間(インフラ整理含む)
修正作業の開始承認をお待ちしています。
Redmine Admin さんが20日前に更新
Redmine Admin さんが20日前に更新
調査結果報告¶
1. 現在の実行環境¶
- claude-search-systemのパス:
/root/claude-search-system/
- Docker Composeファイル:
-
docker-compose.yml
(UIコンテナ定義) -
docker-compose-api.yml
(API/DB/Web定義)
-
2. 問題点の特定¶
2.1 APIコンテナがunhealthy状態になる原因¶
-
DB接続エラー: ログから
socket.gaierror: [Errno -3] Temporary failure in name resolution
エラーが確認できます -
原因: DBのホスト名解決ができていない可能性があります。APIコンテナの環境変数
DATABASE_URL
ではclaude-search-db:5432
というホスト名を指定していますが、DNS解決に失敗しています -
不整合: Dockerの実行環境とマウントパスに不整合があり、APIコンテナのマウントパスが
/root/projects/claude-search/
を参照していますが、実際のファイルは/root/claude-search-system/
にあります
2.2 重複コンテナの問題¶
-
重複するUI:
claude-search-ui
とclaude-search-web
の2つが同じ目的で使われています -
設定ファイル:
docker-compose.yml
とdocker-compose-api.yml
に分かれた定義があり、整理が必要です
2.3 Nginx設定の問題¶
-
IPアドレス直接指定: Nginxの設定では
proxy_pass http://192.168.208.3:3005;
と直接IPアドレスを指定しています - バックエンドAPI連携なし: claude-search-apiコンテナへのリバースプロキシ設定が見当たりません
3. 改善案¶
3.1 API修正¶
- APIコンテナのパスを修正: マウントパスを
/root/claude-search-system/
に統一 - ヘルスチェックの改善: データベース接続テストを強化
3.2 Docker設定の整理¶
- 単一のDocker Composeファイルに統合: 重複を排除
- コンテナ名の整理:
claude-search-ui
を削除し、claude-search-web
のみを使用
3.3 Nginx設定の改善¶
- IPアドレス直接指定を改め、コンテナ名ベースのプロキシ設定に変更
- APIエンドポイント
/api/v2/
への適切なプロキシルール追加
次のステップとして、これらの改善を順次実施していきます。
Redmine Admin さんが20日前に更新
修正完了報告¶
1. 実施した修正¶
1.1 Docker Compose設定の修正¶
-
docker-compose-api.yml
を整理し、適切なボリュームマウント設定に変更 -
claude-search-ui
コンテナを削除し、claude-search-web
のみを使用するように統一 - APIコンテナのビルド設定を修正し、正常に起動するよう調整
1.2 Nginx設定の修正¶
-
claude.call2arm.com.conf
を更新し、IPアドレス直接指定からホスト名ベースに変更 -
/api/
パスへのプロキシルールを追加し、APIエンドポイントへのアクセスを改善 - ヘルスチェックエンドポイントを適切に設定
2. 動作確認結果¶
- 全コンテナが正常に起動し、ヘルスチェックも成功
378a84d6c66e nginx:alpine "/docker-entrypoint.…" About a minute ago Up About a minute (healthy) 80/tcp claude-search-web
1ddd3db39839 claude-search-system_api "uvicorn main:app --…" About a minute ago Up About a minute (healthy) 8000/tcp claude-search-api
513f69805194 postgres:15-alpine "docker-entrypoint.s…" About a minute ago Up About a minute (healthy) 5432/tcp claude-search-db
- APIヘルスチェックエンドポイントが正常に応答
{
"status": "healthy",
"database": "connected",
"version": "2.1.0",
"timestamp": "2025-06-08T07:20:54.552491",
"connection_pool": {
"size": 2,
"free_connections": 1,
"used_connections": 1
}
}
- WebブラウザからのAPIアクセスが正常に機能(https://claude.call2arm.com/api/v2/health)
- WebブラウザからのUI表示が正常に機能(https://claude.call2arm.com/)
3. 残っている課題¶
-
Docker構成ファイルの整理
- 現在は
docker-compose-api.yml
を使用していますが、これを標準のdocker-compose.yml
にリネームすることを推奨
- 現在は
-
Web UIの最適化
- 現在は基本的なNginxイメージを使用していますが、コンテンツとスタイルの改善が必要
-
CI/CDパイプラインの検討
- 現在は手動デプロイですが、自動テストと自動デプロイの導入を検討
4. まとめ¶
Claude検索システムは正常に動作するようになりました。今回の修正によりAPI連携の問題が解消され、適切なコンテナ構成に整理されました。今後は定期的なメンテナンスと機能強化を進めていくことを推奨します。
操作