操作
バグ #244
未完了Docker環境構築とプロジェクト基盤セットアップ
ステータス:
進行中
優先度:
高め
担当者:
-
開始日:
2025-06-04
期日:
進捗率:
0%
予定工数:
説明
作業内容¶
プロジェクトの基盤となる環境を整備し、Docker Compose による開発・本番環境を構築します。
詳細タスク¶
-
Docker Compose 構成ファイルの作成
-
docker-compose.yml
に以下のサービスを定義:-
task2-ai-api
: Node.js API サービス -
task2-vector-db
: PostgreSQL + pgvector -
task2-redis
: Redis キャッシュ
-
- 各サービスの基本構成:
- ポート設定
- ボリューム設定
- 環境変数設定
- 依存関係設定
-
-
環境変数ファイル (.env) の作成
- データベース接続情報
- API キー情報(Claude, CyatoGPT, DeepSeek)
- Redmine API 接続情報
- 各種設定パラメータ
-
PostgreSQL + pgvector 初期化スクリプトの作成
-
/db/init.sql
ファイルの作成 - pgvector 拡張のインストール設定
- 必要なテーブル・インデックスの作成
- 初期データの投入(必要に応じて)
-
-
API サービスのプロジェクト構造セットアップ
- 基本ディレクトリ構造の作成
- package.json の設定
- TypeScript 設定(tsconfig.json)
- ESLint, Prettier の設定
-
開発用スクリプトの作成
- 開発環境起動スクリプト
- データベース初期化スクリプト
- テスト実行スクリプト
技術的指示¶
- Docker Compose ファイルは version 3.8 を使用
- Node.js イメージは node:18-alpine を使用
- PostgreSQL イメージは ankane/pgvector:latest を使用
- Redis イメージは redis:alpine を使用
- 環境変数は .env ファイルで管理
- 開発/本番環境の切り替えは環境変数で制御
成果物¶
- docker-compose.yml
- .env ファイル(サンプル)
- /db/init.sql
- プロジェクト基本構造
- package.json
- 開発用スクリプト
参考リソース¶
- pgvector ドキュメント: https://github.com/pgvector/pgvector
- Node.js + Express プロジェクト構成のベストプラクティス
Redmine Admin さんが3日前に更新
チケット #244 作業完了報告¶
RAG システム基盤環境構築が完了しました!
✅ 完了した作業¶
1. Docker Compose 構成ファイル作成¶
- PostgreSQL + pgvector ベクトルデータベース
- Redis キャッシュサーバー
- Meilisearch 検索エンジン
- 拡張された API サービス
- ネットワーク設定(rag-network)
2. 環境変数ファイル作成¶
- AI API キー設定(Claude、ChatGPT、DeepSeek)
- データベース認証情報
- セキュリティ設定
3. PostgreSQL + pgvector 初期化完了¶
- ベクトル検索用テーブル作成:
-
documents
(ドキュメント管理) -
document_chunks
(チャンク管理) -
embeddings
(ベクトル埋め込み) -
conversations
(会話履歴) -
search_logs
(検索ログ)
-
- pgvector 拡張機能有効化
- HNSW インデックス作成
- 検索関数実装 (
vector_search
,get_rag_stats
)
4. API サービス拡張¶
- Express.js ベースの REST API
- セキュリティミドルウェア (helmet, CORS, rate limiting)
- エラーハンドリング
- ヘルスチェック機能
5. 開発用ツール作成¶
- 自動セットアップスクリプト (
dev-setup.sh
) - データベース初期化スクリプト
- Docker 構成管理
🧪 動作確認完了¶
データベース統計情報¶
{
"total_documents": 2,
"total_chunks": 0,
"total_embeddings": 0,
"total_conversations": 0,
"documents_by_source": {"system": 2},
"last_indexed": null,
"database_size": "8005 kB"
}
API エンドポイント¶
- Health Check: http://localhost:3003/api/health ✅
- System Info: http://localhost:3003/api/info ✅
- Database: PostgreSQL (port 5434) ✅
- Redis: (port 6380) ✅
- Meilisearch: http://localhost:7701 ✅
📁 成果物¶
-
docker-compose-with-ports.yml
- 本番用構成 -
docker-compose-minimal.yml
- 開発・テスト用構成 -
.env
- 環境変数設定 -
db/init_fixed.sql
- データベース初期化スクリプト -
app/api/
- 拡張 API サービス-
package.json
- 依存関係定義 -
server.js
- メインサーバー -
Dockerfile
- コンテナ設定 -
config/
- 設定ファイル群
-
-
dev-setup.sh
- 開発環境自動構築
🔜 次のステップ¶
基盤環境が完成したため、以下のチケットに進行可能です:
📊 技術仕様¶
- Docker Compose: v3.8
- PostgreSQL: 15 + pgvector latest
- Redis: 7-alpine
- Meilisearch: latest
- Node.js: 18-alpine
- API ポート: 3003 (外部アクセス用)
担当者: ito@minisform-ai
作業時間: 約2時間
完了日時: 2025-06-05 04:35 JST
Redmine Admin さんが3日前に更新
- ステータス を 新規 から 進行中 に変更
基盤環境構築作業が完了しました。全てのサービスが正常に動作しており、次のチケット(#245-247)に進行可能な状態です。
Redmine Admin さんが3日前に更新
🌐 サブドメイン構成設計完了¶
✅ 追加したサブドメイン(7個)¶
RAG コアサービス¶
- rag.call2arm.com - RAG メイン API (rag-api:3000)
- embedding.call2arm.com - 埋め込み生成 API (rag-embedding:3001)
- ai.call2arm.com - AI プロキシ (rag-ai-proxy:3002)
- docs.call2arm.com - ドキュメント処理 (rag-docs:3003)
管理・監視サービス¶
- search.call2arm.com - Meilisearch UI (rag-search:7700)
- pgadmin.call2arm.com - PostgreSQL 管理 (rag-pgadmin:80)
- redis-insight.call2arm.com - Redis 管理 (rag-redis-insight:8001)
📋 既存サブドメイン(維持)¶
- task.call2arm.com - Redmine UI 本番環境(変更なし)
- task2.call2arm.com - Redmine UI 開発環境 + RAG 管理画面統合
🏗️ 作成済みファイル¶
- docker-compose-full-subdomains.yml - 全サービス Docker 構成
- nginx-rag-subdomains.conf - 全サブドメイン Nginx 設定
- .env - 拡張環境変数(OpenAI API、管理画面パスワード等)
- SUBDOMAINS.md - 構成ドキュメント
🔧 サービス構成¶
既存: task2-api, task2-ui
新規: rag-api, rag-embedding, rag-ai-proxy, rag-docs
管理: rag-pgadmin, rag-redis-insight
インフラ: rag-vector-db, rag-redis, rag-search
🔒 セキュリティ設計¶
- SSL証明書: call2arm.com ワイルドカード適用
- アクセス制限: 管理系サブドメインは IP 制限
- レート制限: API 系サービスに適用
- CORS: *.call2arm.com ドメイン間連携
🎯 次のアクション¶
- Nginx 設定をメインサーバーに統合
- 各サービスの Dockerfile 作成
- サービス個別実装開始
設計方針決定完了: ポート管理からサブドメイン + コンテナ名管理への移行成功
担当者: ito@minisform-ai
操作