mirror of
https://github.com/NoFxAiOS/nofx.git
synced 2025-12-06 13:54:41 +08:00
* fix(trader): get peakPnlPct using posKey * fix(docs): keep readme at the same page --------- Co-authored-by: zbhan <zbhan@freewheel.tv>
11 KiB
11 KiB
🐳 Dockerワンクリックデプロイガイド
このガイドは、Dockerを使用してNOFX AIトレーディング競争システムを迅速にデプロイする方法を説明します。
📋 前提条件
開始する前に、システムに以下が必要です:
- Docker: バージョン20.10以上
- Docker Compose: バージョン2.0以上
Dockerのインストール
macOS / Windows
Docker Desktopをダウンロードしてインストール
Linux (Ubuntu/Debian)
Docker Composeバージョンに関する注意
新規ユーザー推奨:
- Docker Desktopを使用: 最新のDocker Composeが自動的に含まれ、別途インストールは不要
- シンプルなインストール、ワンクリックセットアップ、GUI管理を提供
- macOS、Windows、一部のLinuxディストリビューションをサポート
既存ユーザー向け注意:
- スタンドアロンdocker-composeの非推奨: 独立したDocker Composeバイナリのダウンロードは推奨されません
- 組み込みバージョンを使用: Docker 20.10+には
docker composeコマンド(スペース付き)が含まれています- 古い
docker-composeをまだ使用している場合は、新しい構文にアップグレードしてください
推奨:Docker Desktop(利用可能な場合)またはCompose組み込みのDocker CEを使用
# Dockerをインストール(composeを含む)
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# dockerグループにユーザーを追加
sudo usermod -aG docker $USER
newgrp docker
# インストールを確認(新しいコマンド)
docker --version
docker compose --version # Docker 24+にはこれが含まれており、別途インストール不要
🚀 クイックスタート(3ステップ)
ステップ1:設定ファイルを準備
# 設定テンプレートをコピー
cp config.json.example config.json
# APIキーで設定ファイルを編集
nano config.json # または他のエディタを使用
必須フィールド:
{
"traders": [
{
"id": "my_trader",
"name": "My AI Trader",
"ai_model": "deepseek",
"binance_api_key": "YOUR_BINANCE_API_KEY", // ← BinanceのAPIキー
"binance_secret_key": "YOUR_BINANCE_SECRET_KEY", // ← Binanceのシークレットキー
"deepseek_key": "YOUR_DEEPSEEK_API_KEY", // ← DeepSeekのAPIキー
"initial_balance": 1000.0,
"scan_interval_minutes": 3
}
],
"use_default_coins": true,
"api_server_port": 8080
}
ステップ2:ワンクリック起動
# すべてのサービスをビルドして起動(初回実行)
docker compose up -d --build
# 以降の起動(リビルドなし)
docker compose up -d
起動オプション:
--build: Dockerイメージをビルド(初回実行またはコード更新後に使用)-d: デタッチモードで実行(バックグラウンド)
ステップ3:システムにアクセス
デプロイが完了したら、ブラウザを開いて以下にアクセス:
- Webインターフェース: http://localhost:3000
- APIヘルスチェック: http://localhost:8080/health
📊 サービス管理
実行状態を表示
# すべてのコンテナステータスを表示
docker compose ps
# サービスヘルスステータスを表示
docker compose ps --format json | jq
ログを表示
# すべてのサービスログを表示
docker compose logs -f
# バックエンドログのみを表示
docker compose logs -f backend
# フロントエンドログのみを表示
docker compose logs -f frontend
# 最後の100行を表示
docker compose logs --tail=100
サービスを停止
# すべてのサービスを停止(データを保持)
docker compose stop
# コンテナを停止して削除(データを保持)
docker compose down
# コンテナとボリュームを停止して削除(すべてのデータをクリア)
docker compose down -v
サービスを再起動
# すべてのサービスを再起動
docker compose restart
# バックエンドのみを再起動
docker compose restart backend
# フロントエンドのみを再起動
docker compose restart frontend
サービスを更新
# 最新のコードをプル
git pull
# リビルドして再起動
docker compose up -d --build
🔧 高度な設定
ポートを変更
docker-compose.ymlを編集してポートマッピングを変更:
services:
backend:
ports:
- "8080:8080" # "your_port:8080"に変更
frontend:
ports:
- "3000:80" # "your_port:80"に変更
リソース制限
docker-compose.ymlにリソース制限を追加:
services:
backend:
deploy:
resources:
limits:
cpus: '2'
memory: 2G
reservations:
cpus: '1'
memory: 1G
環境変数
.envファイルを作成して環境変数を管理:
# .env
TZ=Asia/Tokyo
BACKEND_PORT=8080
FRONTEND_PORT=3000
次にdocker-compose.ymlで使用:
services:
backend:
ports:
- "${BACKEND_PORT}:8080"
📁 データの永続化
システムは自動的にデータをローカルディレクトリに永続化します:
./decision_logs/: AI判断ログ./coin_pool_cache/: コインプールキャッシュ./config.json: 設定ファイル(マウント済み)
データの場所:
# データディレクトリを表示
ls -la decision_logs/
ls -la coin_pool_cache/
# データをバックアップ
tar -czf backup_$(date +%Y%m%d).tar.gz decision_logs/ coin_pool_cache/ config.json
# データを復元
tar -xzf backup_20241029.tar.gz
🐛 トラブルシューティング
コンテナが起動しない
# 詳細なエラーメッセージを表示
docker compose logs backend
docker compose logs frontend
# コンテナステータスを確認
docker compose ps -a
# リビルド(キャッシュをクリア)
docker compose build --no-cache
ポートが既に使用中
# ポートを使用しているプロセスを検索
lsof -i :8080 # バックエンドポート
lsof -i :3000 # フロントエンドポート
# プロセスを強制終了
kill -9 <PID>
設定ファイルが見つからない
# config.jsonが存在することを確認
ls -la config.json
# 存在しない場合、テンプレートをコピー
cp config.json.example config.json
ヘルスチェックが失敗
# ヘルスステータスを確認
docker inspect nofx-backend | jq '.[0].State.Health'
docker inspect nofx-frontend | jq '.[0].State.Health'
# ヘルスエンドポイントを手動でテスト
curl http://localhost:8080/health
curl http://localhost:3000/health
フロントエンドがバックエンドに接続できない
# ネットワーク接続を確認
docker compose exec frontend ping backend
# バックエンドサービスが実行中か確認
docker compose exec frontend wget -O- http://backend:8080/health
Dockerリソースをクリーン
# 未使用のイメージをクリーン
docker image prune -a
# 未使用のボリュームをクリーン
docker volume prune
# すべての未使用リソースをクリーン(注意して使用)
docker system prune -a --volumes
🔐 セキュリティ推奨事項
-
config.jsonをGitにコミットしない
# config.jsonが.gitignoreに含まれていることを確認 echo "config.json" >> .gitignore -
機密データには環境変数を使用
# docker-compose.yml services: backend: environment: - BINANCE_API_KEY=${BINANCE_API_KEY} - BINANCE_SECRET_KEY=${BINANCE_SECRET_KEY} -
APIアクセスを制限
# ローカルアクセスのみを許可 services: backend: ports: - "127.0.0.1:8080:8080" -
イメージを定期的に更新
docker compose pull docker compose up -d
🌐 本番環境デプロイ
Nginxリバースプロキシの使用
# /etc/nginx/sites-available/nofx
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /api/ {
proxy_pass http://localhost:8080/api/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
HTTPSの設定(Let's Encrypt)
# Certbotをインストール
sudo apt-get install certbot python3-certbot-nginx
# SSL証明書を取得
sudo certbot --nginx -d your-domain.com
# 自動更新
sudo certbot renew --dry-run
Docker Swarmの使用(クラスタデプロイ)
# Swarmを初期化
docker swarm init
# スタックをデプロイ
docker stack deploy -c docker-compose.yml nofx
# サービスステータスを表示
docker stack services nofx
# サービスをスケール
docker service scale nofx_backend=3
📈 監視&ロギング
ログ管理
# ログローテーションを設定(docker-compose.ymlで既に設定済み)
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
# ログ統計を表示
docker compose logs --timestamps | wc -l
監視ツール統合
Prometheus + Grafanaで監視を統合:
# docker-compose.yml(監視サービスを追加)
services:
prometheus:
image: prom/prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
grafana:
image: grafana/grafana
ports:
- "3001:3000"
🆘 ヘルプを取得
📝 コマンドチートシート
# 起動
docker compose up -d --build # ビルドして起動
docker compose up -d # 起動(リビルドなし)
# 停止
docker compose stop # サービスを停止
docker compose down # コンテナを停止して削除
docker compose down -v # コンテナとデータを停止して削除
# 表示
docker compose ps # ステータスを表示
docker compose logs -f # ログを表示
docker compose top # プロセスを表示
# 再起動
docker compose restart # すべてのサービスを再起動
docker compose restart backend # バックエンドを再起動
# 更新
git pull && docker compose up -d --build
# クリーン
docker compose down -v # すべてのデータをクリア
docker system prune -a # Dockerリソースをクリーン
🎉 おめでとうございます!NOFX AIトレーディング競争システムのデプロイに成功しました!
問題が発生した場合は、トラブルシューティングセクションを確認するか、Issueを提出してください。