mirror of
https://github.com/laoxong/nofx.git
synced 2026-06-04 09:58:22 +08:00
Add ja docs (#530)
* docs: add Japanese README * docs: Update README.ja.md * docs: add DOCKER_DEPLOY.ja.md --------- Co-authored-by: Ikko Ashimine <ashimine_ikko_bp@tenso.com>
This commit is contained in:
@@ -0,0 +1,472 @@
|
||||
# 🐳 Dockerワンクリックデプロイガイド
|
||||
|
||||
このガイドは、Dockerを使用してNOFX AIトレーディング競争システムを迅速にデプロイする方法を説明します。
|
||||
|
||||
## 📋 前提条件
|
||||
|
||||
開始する前に、システムに以下が必要です:
|
||||
|
||||
- **Docker**: バージョン20.10以上
|
||||
- **Docker Compose**: バージョン2.0以上
|
||||
|
||||
### Dockerのインストール
|
||||
|
||||
#### macOS / Windows
|
||||
[Docker Desktop](https://www.docker.com/products/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を使用*
|
||||
|
||||
```bash
|
||||
# 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:設定ファイルを準備
|
||||
|
||||
```bash
|
||||
# 設定テンプレートをコピー
|
||||
cp config.json.example config.json
|
||||
|
||||
# APIキーで設定ファイルを編集
|
||||
nano config.json # または他のエディタを使用
|
||||
```
|
||||
|
||||
**必須フィールド:**
|
||||
```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:ワンクリック起動
|
||||
|
||||
```bash
|
||||
# すべてのサービスをビルドして起動(初回実行)
|
||||
docker compose up -d --build
|
||||
|
||||
# 以降の起動(リビルドなし)
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
**起動オプション:**
|
||||
- `--build`: Dockerイメージをビルド(初回実行またはコード更新後に使用)
|
||||
- `-d`: デタッチモードで実行(バックグラウンド)
|
||||
|
||||
### ステップ3:システムにアクセス
|
||||
|
||||
デプロイが完了したら、ブラウザを開いて以下にアクセス:
|
||||
|
||||
- **Webインターフェース**: http://localhost:3000
|
||||
- **APIヘルスチェック**: http://localhost:8080/health
|
||||
|
||||
## 📊 サービス管理
|
||||
|
||||
### 実行状態を表示
|
||||
|
||||
```bash
|
||||
# すべてのコンテナステータスを表示
|
||||
docker compose ps
|
||||
|
||||
# サービスヘルスステータスを表示
|
||||
docker compose ps --format json | jq
|
||||
```
|
||||
|
||||
### ログを表示
|
||||
|
||||
```bash
|
||||
# すべてのサービスログを表示
|
||||
docker compose logs -f
|
||||
|
||||
# バックエンドログのみを表示
|
||||
docker compose logs -f backend
|
||||
|
||||
# フロントエンドログのみを表示
|
||||
docker compose logs -f frontend
|
||||
|
||||
# 最後の100行を表示
|
||||
docker compose logs --tail=100
|
||||
```
|
||||
|
||||
### サービスを停止
|
||||
|
||||
```bash
|
||||
# すべてのサービスを停止(データを保持)
|
||||
docker compose stop
|
||||
|
||||
# コンテナを停止して削除(データを保持)
|
||||
docker compose down
|
||||
|
||||
# コンテナとボリュームを停止して削除(すべてのデータをクリア)
|
||||
docker compose down -v
|
||||
```
|
||||
|
||||
### サービスを再起動
|
||||
|
||||
```bash
|
||||
# すべてのサービスを再起動
|
||||
docker compose restart
|
||||
|
||||
# バックエンドのみを再起動
|
||||
docker compose restart backend
|
||||
|
||||
# フロントエンドのみを再起動
|
||||
docker compose restart frontend
|
||||
```
|
||||
|
||||
### サービスを更新
|
||||
|
||||
```bash
|
||||
# 最新のコードをプル
|
||||
git pull
|
||||
|
||||
# リビルドして再起動
|
||||
docker compose up -d --build
|
||||
```
|
||||
|
||||
## 🔧 高度な設定
|
||||
|
||||
### ポートを変更
|
||||
|
||||
`docker-compose.yml`を編集してポートマッピングを変更:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
backend:
|
||||
ports:
|
||||
- "8080:8080" # "your_port:8080"に変更
|
||||
|
||||
frontend:
|
||||
ports:
|
||||
- "3000:80" # "your_port:80"に変更
|
||||
```
|
||||
|
||||
### リソース制限
|
||||
|
||||
`docker-compose.yml`にリソース制限を追加:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
backend:
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '2'
|
||||
memory: 2G
|
||||
reservations:
|
||||
cpus: '1'
|
||||
memory: 1G
|
||||
```
|
||||
|
||||
### 環境変数
|
||||
|
||||
`.env`ファイルを作成して環境変数を管理:
|
||||
|
||||
```bash
|
||||
# .env
|
||||
TZ=Asia/Tokyo
|
||||
BACKEND_PORT=8080
|
||||
FRONTEND_PORT=3000
|
||||
```
|
||||
|
||||
次に`docker-compose.yml`で使用:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
backend:
|
||||
ports:
|
||||
- "${BACKEND_PORT}:8080"
|
||||
```
|
||||
|
||||
## 📁 データの永続化
|
||||
|
||||
システムは自動的にデータをローカルディレクトリに永続化します:
|
||||
|
||||
- `./decision_logs/`: AI判断ログ
|
||||
- `./coin_pool_cache/`: コインプールキャッシュ
|
||||
- `./config.json`: 設定ファイル(マウント済み)
|
||||
|
||||
**データの場所:**
|
||||
```bash
|
||||
# データディレクトリを表示
|
||||
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
|
||||
```
|
||||
|
||||
## 🐛 トラブルシューティング
|
||||
|
||||
### コンテナが起動しない
|
||||
|
||||
```bash
|
||||
# 詳細なエラーメッセージを表示
|
||||
docker compose logs backend
|
||||
docker compose logs frontend
|
||||
|
||||
# コンテナステータスを確認
|
||||
docker compose ps -a
|
||||
|
||||
# リビルド(キャッシュをクリア)
|
||||
docker compose build --no-cache
|
||||
```
|
||||
|
||||
### ポートが既に使用中
|
||||
|
||||
```bash
|
||||
# ポートを使用しているプロセスを検索
|
||||
lsof -i :8080 # バックエンドポート
|
||||
lsof -i :3000 # フロントエンドポート
|
||||
|
||||
# プロセスを強制終了
|
||||
kill -9 <PID>
|
||||
```
|
||||
|
||||
### 設定ファイルが見つからない
|
||||
|
||||
```bash
|
||||
# config.jsonが存在することを確認
|
||||
ls -la config.json
|
||||
|
||||
# 存在しない場合、テンプレートをコピー
|
||||
cp config.json.example config.json
|
||||
```
|
||||
|
||||
### ヘルスチェックが失敗
|
||||
|
||||
```bash
|
||||
# ヘルスステータスを確認
|
||||
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
|
||||
```
|
||||
|
||||
### フロントエンドがバックエンドに接続できない
|
||||
|
||||
```bash
|
||||
# ネットワーク接続を確認
|
||||
docker compose exec frontend ping backend
|
||||
|
||||
# バックエンドサービスが実行中か確認
|
||||
docker compose exec frontend wget -O- http://backend:8080/health
|
||||
```
|
||||
|
||||
### Dockerリソースをクリーン
|
||||
|
||||
```bash
|
||||
# 未使用のイメージをクリーン
|
||||
docker image prune -a
|
||||
|
||||
# 未使用のボリュームをクリーン
|
||||
docker volume prune
|
||||
|
||||
# すべての未使用リソースをクリーン(注意して使用)
|
||||
docker system prune -a --volumes
|
||||
```
|
||||
|
||||
## 🔐 セキュリティ推奨事項
|
||||
|
||||
1. **config.jsonをGitにコミットしない**
|
||||
```bash
|
||||
# config.jsonが.gitignoreに含まれていることを確認
|
||||
echo "config.json" >> .gitignore
|
||||
```
|
||||
|
||||
2. **機密データには環境変数を使用**
|
||||
```yaml
|
||||
# docker-compose.yml
|
||||
services:
|
||||
backend:
|
||||
environment:
|
||||
- BINANCE_API_KEY=${BINANCE_API_KEY}
|
||||
- BINANCE_SECRET_KEY=${BINANCE_SECRET_KEY}
|
||||
```
|
||||
|
||||
3. **APIアクセスを制限**
|
||||
```yaml
|
||||
# ローカルアクセスのみを許可
|
||||
services:
|
||||
backend:
|
||||
ports:
|
||||
- "127.0.0.1:8080:8080"
|
||||
```
|
||||
|
||||
4. **イメージを定期的に更新**
|
||||
```bash
|
||||
docker compose pull
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
## 🌐 本番環境デプロイ
|
||||
|
||||
### Nginxリバースプロキシの使用
|
||||
|
||||
```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)
|
||||
|
||||
```bash
|
||||
# Certbotをインストール
|
||||
sudo apt-get install certbot python3-certbot-nginx
|
||||
|
||||
# SSL証明書を取得
|
||||
sudo certbot --nginx -d your-domain.com
|
||||
|
||||
# 自動更新
|
||||
sudo certbot renew --dry-run
|
||||
```
|
||||
|
||||
### Docker Swarmの使用(クラスタデプロイ)
|
||||
|
||||
```bash
|
||||
# Swarmを初期化
|
||||
docker swarm init
|
||||
|
||||
# スタックをデプロイ
|
||||
docker stack deploy -c docker-compose.yml nofx
|
||||
|
||||
# サービスステータスを表示
|
||||
docker stack services nofx
|
||||
|
||||
# サービスをスケール
|
||||
docker service scale nofx_backend=3
|
||||
```
|
||||
|
||||
## 📈 監視&ロギング
|
||||
|
||||
### ログ管理
|
||||
|
||||
```bash
|
||||
# ログローテーションを設定(docker-compose.ymlで既に設定済み)
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "3"
|
||||
|
||||
# ログ統計を表示
|
||||
docker compose logs --timestamps | wc -l
|
||||
```
|
||||
|
||||
### 監視ツール統合
|
||||
|
||||
Prometheus + Grafanaで監視を統合:
|
||||
|
||||
```yaml
|
||||
# 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"
|
||||
```
|
||||
|
||||
## 🆘 ヘルプを取得
|
||||
|
||||
- **GitHub Issues**: [Issueを提出](https://github.com/yourusername/open-nofx/issues)
|
||||
- **ドキュメント**: [README.md](README.md)を確認
|
||||
- **コミュニティ**: Discord/Telegramグループに参加
|
||||
|
||||
## 📝 コマンドチートシート
|
||||
|
||||
```bash
|
||||
# 起動
|
||||
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を提出してください。
|
||||
+1343
File diff suppressed because it is too large
Load Diff
@@ -320,6 +320,7 @@ docker compose up -d --build
|
||||
- **Русский**: См. документацию Docker (скоро будет доступно)
|
||||
- **English**: See [DOCKER_DEPLOY.en.md](DOCKER_DEPLOY.en.md)
|
||||
- **中文**: 查看 [DOCKER_DEPLOY.md](DOCKER_DEPLOY.md)
|
||||
- **日本語**: [DOCKER_DEPLOY.ja.md](DOCKER_DEPLOY.ja.md)を参照
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -323,6 +323,7 @@ docker compose up -d --build
|
||||
- **Українська**: Дивіться документацію Docker (скоро буде доступно)
|
||||
- **English**: See [DOCKER_DEPLOY.en.md](DOCKER_DEPLOY.en.md)
|
||||
- **中文**: 查看 [DOCKER_DEPLOY.md](DOCKER_DEPLOY.md)
|
||||
- **日本語**: [DOCKER_DEPLOY.ja.md](DOCKER_DEPLOY.ja.md)を参照
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -319,6 +319,7 @@ docker compose up -d --build
|
||||
**📖 详细的Docker部署教程、故障排查和高级配置:**
|
||||
- **中文**: 查看 [DOCKER_DEPLOY.md](DOCKER_DEPLOY.md)
|
||||
- **English**: See [DOCKER_DEPLOY.en.md](DOCKER_DEPLOY.en.md)
|
||||
- **日本語**: [DOCKER_DEPLOY.ja.md](DOCKER_DEPLOY.ja.md)を参照
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user