在Fly.io部署ObjectBox Sync:Docker --model参数配置疑问
在Fly.io部署ObjectBox Sync的--model参数配置方案
核心思路
本地Docker通过挂载本地目录加载objectbox-model.json,但Fly.io部署时无法直接挂载本地文件,所以需要将模型文件打包进镜像(静态模型首选)或使用Fly.io持久卷(适合动态更新场景)。以下是具体实现步骤:
1. 准备模型文件
确保项目根目录下存放着本地测试用的objectbox-model.json文件。
2. 镜像打包方案(静态模型首选)
编写Dockerfile
创建自定义镜像,把模型文件嵌入镜像内部:
# 基于官方ObjectBox Sync镜像 FROM objectboxio/sync:sync-server-2022-10-21 # 创建模型文件存放目录 RUN mkdir -p /app/model # 复制本地模型文件到镜像中 COPY objectbox-model.json /app/model/ # 设置启动命令,指定模型文件路径 CMD ["--model", "/app/model/objectbox-model.json", "--unsecured-no-authentication", "--admin-bind", "0.0.0.0:9980"]
配置fly.toml
创建或修改fly.toml,配置端口暴露规则:
app = "your-app-name" primary_region = "your-region" # 配置Sync服务端口 [[services]] internal_port = 9999 protocol = "tcp" [[services.ports]] port = 9999 # 配置管理后台端口 [[services]] internal_port = 9980 protocol = "tcp" [[services.ports]] port = 9980
- 替换
your-app-name为你的Fly应用名称 - 替换
your-region为就近的Fly.io区域(如sin、iad)
部署命令
执行部署:
fly deploy
3. 持久卷方案(动态更新模型用)
如果后续需要频繁调整模型文件,可使用Fly.io持久卷挂载:
- 创建持久卷:
fly volumes create objectbox_data --size 1
- 修改fly.toml添加卷挂载:
[mounts] source = "objectbox_data" destination = "/data"
- 上传模型文件到卷:
fly ssh sftp put objectbox-model.json /data/
- 调整Dockerfile的启动命令:
CMD ["--model", "/data/objectbox-model.json", "--unsecured-no-authentication", "--admin-bind", "0.0.0.0:9980"]
- 重新部署:
fly deploy
内容的提问来源于stack exchange,提问作者Sithu Aung
相关产品推荐
相关产品推荐

