用 Docker Compose 自托管
在一台 VPS 上用 docker-compose.yml、网络和卷运行多个自托管服务(Postgres、Redis、Nextcloud、Plausible)。
为什么
Docker Compose 让你在一个 YAML 文件中声明多服务栈(应用+数据库+缓存+反向代理),可版本控制和复现。卷持久化数据,网络隔离服务,'docker compose up -d' 启动整个栈。
这是标准自托管模式。
何时使用
单主机多容器自托管设置用 Compose。需要多主机或滚动更新时才用 Swarm/K8s。单 VPS 运行少量服务时 Compose 是正确工具。
如何做
示例
常见问题
- ⚠'docker compose down' 丢数据 —— 卷默认保留,但 'down -v' 会删除;生产环境绝不用 -v。
- ⚠服务互不可解析 —— 在不同网络;放同一命名网络或用 Compose 创建的默认网络。
- ⚠80/443 端口冲突 —— 仅反向代理应绑定 80/443;其他服务仅绑内部端口并通过代理访问。
最佳实践
- ✓镜像标签固定到具体版本(postgres:16 而非 postgres:latest),使拉取可复现且可控升级时机。
- ✓数据库数据用命名卷(非绑定挂载),使 Docker 管理权限并通过 'docker run --volumes-from' 备份。
- ✓每个服务设 restart: unless-stopped,使栈重启后无需手动干预即可恢复。
常见问题解答
什么是用 Docker Compose 自托管?它解决什么问题?
在一台 VPS 上用 docker-compose.yml、网络和卷运行多个自托管服务(Postgres、Redis、Nextcloud、Plausible)。 它可帮助开发者在不自建基础设施的前提下完成部署、存储与扩展,是云服务选型的核心参考。
如何在 5 分钟内上手用 Docker Compose 自托管?
两步即可跑通:① 安装 Docker Engine + compose 插件。;② 编写 docker-compose.yml,含服务、卷和网络。。建议先用免费套餐验证流程,再接入生产环境。
用 Docker Compose 自托管 最容易踩的坑是什么?
最高频的问题是:'docker compose down' 丢数据 —— 卷默认保留,但 'down -v' 会删除;生产环境绝不用 -v。。建议在上线前用 checklist 逐项核对,并在 CI 中加入策略与配置扫描。
用 Docker Compose 自托管 的最佳实践有哪些?
用 Docker Compose 自托管 的最佳实践包括:镜像标签固定到具体版本(postgres:16 而非 postgres:latest),使拉取可复现且可控升级时机。;数据库数据用命名卷(非绑定挂载),使 Docker 管理权限并通过 'docker run --volumes-from' 备份。;每个服务设 restart: unless-stopped,使栈重启后无需手动干预即可恢复。。其中首条「镜像标签固定到具体版本(postgres:16 而非 postgres:latest),使拉取可复现且可控升级时机。」应作为团队默认规范写入 IaC 模板。
用 Docker Compose 自托管 如何控制成本与避免账单意外?
三招防超支:① 为所有资源打 env/team 标签并启用账单告警;② 用预算阈值触发 Slack/邮件通知;③ 定期用 Cost Explorer 审查闲置资源并清理。用 Docker Compose 自托管 多数提供免费套餐,先在免费额度内验证再放量。