# FleetFlow
[](https://crates.io/crates/fleetflow)
[](https://docs.rs/fleetflow)
[](https://github.com/chronista-club/fleetflow#license)
> Docker Composeよりシンプル。KDLで書く、次世代の環境構築ツール。
FleetFlowは、KDL(KDL Document Language)をベースにした、革新的で超シンプルなコンテナオーケストレーションツールです。Docker Composeの手軽さはそのままに、より少ない記述で、より強力な設定管理を実現します。
## ✨ 特徴
- **超シンプル**: Docker Composeと同等かそれ以下の記述量
- **可読性**: YAMLよりも読みやすいKDL構文
- **ステージ管理**: 開発環境から本番環境まで統一管理
- **自動推測**: サービス名から自動的にDockerイメージを推測
## 📦 インストール
```bash
cargo install fleetflow
```
## 🚀 クイックスタート
### 1. 設定ファイルを作成
`flow.kdl`:
```kdl
service "postgres" {
version "16"
ports {
port host=5432 container=5432
}
environment {
POSTGRES_USER "myuser"
POSTGRES_PASSWORD "mypass"
POSTGRES_DB "mydb"
}
}
service "redis" {
version "7"
ports {
port host=6379 container=6379
}
}
service "app" {
image "myapp"
version "latest"
ports {
port host=8080 container=8080
}
environment {
DATABASE_URL "postgresql://myuser:mypass@postgres:5432/mydb"
REDIS_URL "redis://redis:6379"
}
depends_on "postgres" "redis"
}
stage "local" {
service "postgres"
service "redis"
service "app"
}
```
### 2. サービスを起動
```bash
fleetflow up
```
### 3. サービスを確認
```bash
fleetflow ps
```
### 4. サービスを停止
```bash
fleetflow down
```
## 📚 主なコマンド
| `fleetflow up [stage]` | ステージ内のサービスを起動 |
| `fleetflow down [stage]` | ステージ内のサービスを停止 |
| `fleetflow ps` | 実行中のサービスを一覧表示 |
| `fleetflow logs <service>` | サービスのログを表示 |
## 🎯 主な機能
### KDLベースの直感的な記述
YAMLの冗長さから解放され、読みやすく書きやすい設定ファイルを実現。
```kdl
service "api" {
image "myapp:latest"
port 8080
env {
DATABASE_URL "postgresql://localhost/mydb"
}
}
```
### ステージベースの環境管理
開発環境から本番環境まで、ステージで管理。
```kdl
stage "local" {
service "postgres"
service "redis"
service "app"
}
stage "production" {
service "postgres"
service "redis"
}
```
### 自動イメージ推測
サービス名から自動的にDockerイメージを推測。設定の記述量を削減。
```kdl
service "postgres" {
version "16" // postgres:16 として自動推測
}
```
### テンプレート変数
環境変数や変数定義を使って、設定を動的に生成。
```kdl
variables {
app_version "1.0.0"
registry "ghcr.io/myorg"
}
service "api" {
image "{{ registry }}/api:{{ app_version }}"
}
```
## 📖 ドキュメント
- [GitHubリポジトリ](https://github.com/chronista-club/fleetflow)
- [仕様書](https://github.com/chronista-club/fleetflow/tree/main/spec)
- [CHANGELOG](https://github.com/chronista-club/fleetflow/blob/main/CHANGELOG.md)
## 🏗️ アーキテクチャ
FleetFlowは以下のクレートで構成されています:
- **fleetflow** - メインCLI
- **fleetflow-atom** - コア機能(パーサー、モデル、ローダー)
- **fleetflow-config** - 設定ファイル検索と管理
- **fleetflow-container** - Dockerコンテナランタイム統合
## 📄 ライセンス
MIT OR Apache-2.0
## 🙏 コントリビューション
Issue、Pull Requestを歓迎します!
## 🔗 関連クレート
- [`fleetflow-atom`](https://crates.io/crates/fleetflow-atom) - コア機能
- [`fleetflow-config`](https://crates.io/crates/fleetflow-config) - 設定管理
- [`fleetflow-container`](https://crates.io/crates/fleetflow-container) - コンテナランタイム統合