Floci 是一组本地云模拟器,能够与真实的云线协议通信。floci 命令(floci-cli)负责管理模拟器的生命周期,而原生工具(aws、gcloud、az、oci、SDK、Terraform)则针对模拟器进行资源操作。floci-cli 本身从不创建云资源。
用途
Floci 用于在本地模拟 AWS、GCP、Azure 和 OCI 云环境,方便开发者在不接触真实云的情况下进行开发、调试和测试。它支持通过原生云 CLI 和 SDK 与模拟器交互,确保代码在迁移到真实云时具有较高的兼容性。
主要能力
- 提供四个云平台的模拟器:AWS(floci)、GCP(floci-gcp)、Azure(floci-az)、OCI(floci-oci)。
- floci-cli 管理模拟器生命周期:启动、等待健康、导出环境变量、停止并移除容器。
- 支持通过 Docker 容器运行,也支持 Docker Compose 和 Testcontainers 集成。
- 提供状态检查、服务列表、日志查看、配置管理和故障诊断等命令。
- 支持多实例管理(通过 profile),每个实例有独立的容器、端口和资源命名空间。
- 遵循严格规则:仅使用假凭证,绝不接触真实云;操作前验证端点指向模拟器。
使用方式
- 前置检查:确认 floci-cli 已安装(
floci version)且 Docker 可达(docker info)。若缺少 floci,可运行安装脚本scripts/install-floci.sh(Windows 使用iwr https://floci.io/install.ps1 | iex)。 - 生命周期命令(以 AWS 为例):
- 启动:
floci aws start --detach(拉取镜像并启动) - 等待健康:
floci aws wait --timeout 2m - 导出环境变量:
eval "$(floci aws env -o text)" - 使用原生工具操作资源(如
aws s3 ls) - 停止并移除:
floci aws stop --remove
- 启动:
- 对于 Azure 和 OCI,需先运行一次性设置命令:
floci az setup和floci oci setup。 - 使用多个实例时,通过
--profile <name>指定配置,例如创建 profile 后启动并导出环境变量。
适用场景
- 本地开发与调试云应用,无需真实云凭证。
- 集成测试,特别是使用 Testcontainers 的场景(AWS 支持 Java、Node、Python、Go 和 .NET;Azure 仅支持 Java;GCP 和 OCI 暂无 Testcontainers 模块)。
- 需要 Docker Compose 或容器化应用连接模拟器的场景。
- CI/CD 管道中模拟云服务。
限制
- 各服务的覆盖范围不同:部分为完整引擎,部分为进程内模拟,部分仅返回预设响应。使用前需检查服务是否启用并阅读对应文档。
- 状态默认是临时的,除非使用
--persist <dir>或 profile 中配置 persistDir。 - 重启会移除并重新创建容器,Azure 上需重新运行
floci az setup。 - floci-cli 不安装 Docker,也不安装原生云 CLI。
- Windows 上辅助脚本为 bash,需直接运行 floci 命令。
- 无原生二进制文件的平台需下载 floci.jar 并运行(需 Java 25+)。