Openship Docker Compose部署指南:现有compose文件原样上线
【免费下载链接】openshipSelf-hosted deployment platform项目地址: https://gitcode.com/GitHub_Trending/ope/openship
如果你有一堆现成的docker-compose.yml项目,想免去重写配置的麻烦,Openship就是你的答案——这是一款开源的自托管部署平台(Self-hosted deployment platform),内置 CI/CD,能把你仓库里现有的Docker Compose文件原样读取并整体上线:每个 service 自动变成一条可管理的服务记录,端口、卷、环境变量、健康检查全部保留,还自动附带域名与 Let's Encrypt 证书。
为什么你的 compose 文件一行都不用改
传统方式上线多服务应用,往往要手写反向代理、证书、重启策略;Openship 的做法是直接解析你的 compose 文件,把「文件」变成「受管服务」👇
- 逐个 service 建模:文件里声明的每个服务都会变成项目Services页中的一行,带 Public/Internal 徽标和实时状态(Running、Stopped、Failed…)。
- 只读不写:Openship 不会改动你的
docker-compose.yml,仪表盘上的修改由平台单独保存,仓库文件永远是干净的。 - 每次部署自动对账:再部署时平台重读当前 compose 源(仓库或本地目录),自动与现有服务行同步,push 时若 compose 文件没被改动还会跳过扫描。
详细规则可参考官方文档中的多服务指南:apps/web/content/docs/guides/compose-multi-service.mdx。
三步快速上线:一键部署现有 compose 文件
第 1 步:在服务器上装好 Openship
最省心的方式是克隆仓库后用 Docker Compose 直接拉起整套平台(Postgres + Redis + API + 仪表盘 + OpenResty 边缘节点,详见 docker/docker-compose.yml):
git clone https://gitcode.com/GitHub_Trending/ope/openship && cd openship cp .env.example .env # 然后按需编辑 docker compose --env-file .env -f docker/docker-compose.yml up -d💡 边缘节点是容器化的 OpenResty,直接接管:80/:443负责路由和 TLS(仅限 Linux 的 host 网络模式)。
第 2 步:创建项目,指向 compose 文件
- 打开仪表盘的Library页,连接你的 GitHub 仓库(或选择本地目录)。
- 选中目标仓库,进入部署向导——Openship 会自动读到
docker-compose.yml并把每个服务列出来。 - 如果 compose 文件不在仓库根目录(比如
deploy/docker-compose.yml),在向导的Compose file输入框填入路径,点Scan即可重新识别;文件名不叫docker-compose.yml(如stack.yml)也完全没问题。
想把这个路径固化下来?在项目里放一个openship.json即可:
{ "composePath": "deploy/docker-compose/docker-compose.yml" }compose 解析的核心逻辑在 apps/api/src/lib/compose-parser.ts,它对相对路径build:上下文的解析方式与原生docker compose build完全一致。
第 3 步:部署并验证
点击Deploy后,顶部步骤条会逐项点亮,实时终端流式输出构建日志。完成后可在项目的Services标签页逐个查看服务状态,点任意一行还能进入服务详情页:
- Overview:容器端口、映射宿主机端口、网络地址、卷挂载
- Logs / Terminal:实时日志与容器内 Shell
- Environment / Settings:在线改环境变量、镜像、重启策略、健康检查
- Backup:对数据库等有状态容器直接安排定期备份
Openship 会读取 compose 文件的哪些字段?
平台对以下字段做了完整建模并参与部署:
| 类别 | 字段 |
|---|---|
| 镜像与构建 | image、build、dockerfile |
| 网络与依赖 | ports、depends_on、restart |
| 配置与数据 | environment、volumes、command |
| 健康检查 | healthcheck |
而networks、build args、labels、profiles、注释等其余内容原样保留——平台既不读取也不重写它们。
仪表盘改了、仓库也改了怎么办?三方合并说清楚
这是新手最容易踩的坑,Openship 用三方对比(base / 你的编辑 / 仓库现值)优雅解决:
| 仓库改动 | 你改过 | 平台行为 |
|---|---|---|
| 否 | — | 保持你的值 |
| 是 | 否 | 自动采用仓库值 |
| 是 | 是 | 保留你的值,并标记为漂移(drift)待你确认 |
出现漂移时,Services 页会弹出醒目的横幅,逐字段展示from → to差异,你只需选Accept upstream(用仓库值)或Keep mine(锁定我的编辑)——你的修改永远不会被静默覆盖。
常用命令速查:CLI 管理 compose 服务栈
偏好终端?所有服务操作都有对应 CLI 命令(需 Docker Compose v2):
openship service list --project my-app # 列出服务 openship service sync --project my-app ./docker-compose.yml # 强制按文件重建服务行 openship service logs --project my-app web --follow openship service env set --project my-app web KEY=value openship service start --project my-app db # start / stop / restart 同理常见问题清单 📌
Q:加完服务为什么没跑起来?A:添加服务只是「保存」,容器在部署时才启动。项目若已有运行中的部署会自动重新部署;否则手动点一次 Deploy(或用服务页的Enable & start)。
Q:service sync提示找不到 docker?A:该命令依赖docker compose config来校验文件,请在运行命令的机器上安装 Docker Compose v2。
Q:云部署时 volumes 不生效?A:自托管/自有服务器上 compose 语义完整(host:container映射与卷挂载都保留);Openship Cloud 上只路由容器端口,数据靠工作区磁盘 + 备份策略保障。
写在最后
Openship 让「现成 compose 文件」从一堆本地配置变成可持续运维的线上服务栈:解析原样、漂移可查、备份内置、证书自动。如果你正在维护多个 Compose 项目,不妨按上面的三步把第一个搬上线——之后每次 push,一切都会自动跟上 🚀
- 平台自托管栈:docker/docker-compose.yml(含变量说明,版本可用
OPENSHIP_VERSION锁定) - 环境变量模板:.env.example
- 多服务完整指南:apps/web/content/docs/guides/compose-multi-service.mdx
- compose 解析实现:apps/api/src/lib/compose-parser.ts
【免费下载链接】openshipSelf-hosted deployment platform项目地址: https://gitcode.com/GitHub_Trending/ope/openship
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考