Docker Compose实战:用一台VPS部署个人全栈云服务

还在为VPS到手后不知道装什么而发愁?本文手把手教你使用Docker Compose在一台VPS上部署WordPress博客、Nextcloud云盘、Uptime Kuma监控和Nginx反向代理,零成本打造个人私有云生态,配置模板直接复制使用。

你还在手动编译Nginx、装PHP、配MySQL,折腾半天才发现依赖冲突?90%的个人站长拿着一台VPS,却把时间浪费在环境配置上,结果换个服务器就得从头再来。实测数据显示,用Docker Compose书写一个YAML文件、一行命令就能启动WordPress+Nextcloud+Redis+MongoDB+Uptime Kuma全套服务,环境完全隔离、可复现、可迁移。

为什么选择Docker Compose管理云服务?

对于拥有一台VPS但又不想把大量时间花在运维上的站长来说,Docker Compose堪称神器。传统的服务部署方式需要在服务器上逐一手动安装环境——先编译Nginx、再装PHP、然后配置MySQL,每一个环节都可能因为操作系统版本差异、依赖冲突、配置文件错误而耗费数小时。而Docker Compose的出现彻底改变了这一局面:你只需编写一个YAML格式的配置文件,把所有服务的镜像、端口映射、环境变量、数据卷和网络关联定义清楚,一行命令就能启动整个服务栈,而且环境完全隔离、可复现、可迁移。

具体来说,Docker Compose为个人站长带来了以下几个核心优势。首先是可重复部署——你在本地测试好的配置,上传到任何一台VPS上都能完美运行,不会出现”我这台机器编译不过”的尴尬。其次是环境隔离——每个服务运行在自己的容器中,WordPress依赖的PHP版本不会和Nextcloud需要的PHP版本打架。最后是一键启停——一条docker compose up -d启动所有服务,一条docker compose down干净地停止并清理资源,无需逐一管理进程。

准备工作:选购一台合适的VPS

在开始部署之前,首先要选择一台配置足够的VPS。根据我们即将部署的服务组合(Nginx反向代理 + WordPress博客 + MySQL数据库 + Uptime Kuma监控 + Nextcloud云盘 + Redis缓存),建议至少选择2GB内存、2核CPU、40GB SSD存储的配置。如果预算允许,DigitalOcean的4GB内存方案或者RackNerd的年付促销机都能很好地胜任这个负载,价格也相当亲民。

对于追求极致性价比的用户,CloudConeHostDare的洛杉矶机房VPS也是不错的选择,年付方案低至十几美元。操作系统建议选择Ubuntu 22.04 LTS或Debian 12,这两个发行版的Docker支持最为成熟,社区资源也最丰富。购买VPS后,记下IP地址和root密码,接下来我们将通过SSH连入服务器进行配置。

Docker Compose服务架构图

第一步:VPS基础环境配置

拿到VPS后的第一件事不是急着装面板,而是做好基础安全加固和环境准备。首先通过SSH登录到你的服务器(推荐使用SSH密钥认证而非密码登录),然后执行系统更新。Ubuntu/Debian系统执行 apt update && apt upgrade -y 即可将所有软件包更新到最新版本。

接下来安装Docker。Docker官方提供了一键安装脚本,执行 curl -fsSL https://get.docker.com | bash 就会自动完成Docker Engine和containerd的安装。安装完成后,执行 docker --version 确认安装成功。Docker Compose v2已经以Docker插件的形式内置在Docker中,通过 docker compose version 即可验证。如果你的系统没有自带Compose插件,也可以通过 apt install docker-compose-plugin 单独安装。

最后配置防火墙。Ubuntu默认使用UFW,执行以下命令放行必要端口:ufw allow 22/tcp(SSH)、ufw allow 80/tcp(HTTP)、ufw allow 443/tcp(HTTPS),然后 ufw enable 启用防火墙。如果你用云服务商的控制面板自带的防火墙规则,也请确保放行了这3个端口。

第二步:Nginx Proxy Manager反向代理

在正式部署业务服务之前,我们首先架设一个统一的入口网关——Nginx Proxy Manager。这是一个基于Nginx的Web管理面板,提供了图形化的反向代理配置和Let’s Encrypt自动SSL证书申请功能,让你无需手动编辑Nginx配置文件就能管理所有域名和HTTPS证书。

创建一个项目目录并在其中编写 docker-compose.yml:

version: "3.8"
services:
  nginx-proxy-manager:
    image: jc21/nginx-proxy-manager:latest
    restart: always
    ports:
      - "80:80"
      - "443:443"
      - "81:81"
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

执行 docker compose up -d 启动服务后,浏览器访问 http://你的IP:81,使用默认账号 [email protected] / changeme 登录,然后立即修改密码。在面板中添加你的域名并申请SSL证书,此后所有流量都将自动通过HTTPS加密传输。

第三步:部署WordPress博客站点

WordPress是全球使用最广泛的CMS系统,占据全球超过40%的网站份额。通过Docker Compose部署WordPress可以让环境完全容器化,不再担心PHP版本升级或MySQL迁移带来的兼容性问题。我们将使用官方的 wordpress:latest 镜像加上 mysql:8.0 数据库,配合Redis缓存加速。

在docker-compose.yml中添加以下服务定义:

  wordpress:
    image: wordpress:latest
    restart: always
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wpuser
      WORDPRESS_DB_PASSWORD: 你的密码
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - ./wp-content:/var/www/html/wp-content

  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wpuser
      MYSQL_PASSWORD: 你的密码
      MYSQL_ROOT_PASSWORD: root密码
    volumes:
      - ./db_data:/var/lib/mysql

  redis:
    image: redis:alpine
    restart: always

启动后回到Nginx Proxy Manager面板,为你的域名创建一个反向代理指向 wordpress:80。访问域名即可进入WordPress安装页面,填入站点信息即可完成博客搭建。安装了Redis Object Cache插件后,页面加载速度可以提升3-5倍。

第四步:Uptime Kuma网站监控

运营网站最怕的是什么?不是流量少,而是网站宕机了自己还不知道。Uptime Kuma是一款开源的网站状态监控工具,提供美观的仪表盘,支持HTTP、Ping、TCP、DNS等多种监控方式,并可以通过Telegram、邮件、Slack等多个渠道发送告警通知。更贴心的是,它内置了状态页面功能,可以生成一个公开的status.yourdomain.com页面展示所有服务的运行状况。

在docker-compose.yml中添加:

  uptime-kuma:
    image: louislam/uptime-kuma:latest
    restart: always
    ports:
      - "3001:3001"
    volumes:
      - ./uptime-kuma:/app/data

启动后访问 http://你的IP:3001 设置管理员账号,然后添加你的WordPress域名、Nextcloud域名和NPM管理面板作为监控目标。建议将监控间隔设为60秒,告警触发阈值设为连续3次失败,这样既能及时发现问题,又不会因为偶发网络抖动而收到大量误报。配置Telegram Bot推送告警后,你可以第一时间在手机上收到网站故障通知。

第五步:Nextcloud私人云盘

Nextcloud是功能最完善的自托管云盘方案,支持文件同步与分享、日历、联系人、端到端加密、Office在线编辑等丰富功能。把它部署在你的VPS上,就可以彻底告别百度网盘的限速和隐私顾虑。Nextcloud对数据库的要求较高,我们选择PostgreSQL而非SQLite来获得更好的并发性能。

在docker-compose.yml中追加:

  nextcloud:
    image: nextcloud:stable
    restart: always
    ports:
      - "8081:80"
    environment:
      POSTGRES_HOST: db-nc
      POSTGRES_DB: nextcloud
      POSTGRES_USER: ncuser
      POSTGRES_PASSWORD: 你的密码
    volumes:
      - ./nc_data:/var/www/html

  db-nc:
    image: postgres:15-alpine
    restart: always
    environment:
      POSTGRES_DB: nextcloud
      POSTGRES_USER: ncuser
      POSTGRES_PASSWORD: 你的密码
    volumes:
      - ./pg_data:/var/lib/postgresql/data

启动后在NPM面板中为Nextcloud添加反向代理,指向 nextcloud:80。首次访问需要创建管理员账号并配置PostgreSQL数据库连接。Nextcloud的客户端支持Windows、macOS、Linux、Android和iOS全平台覆盖,安装客户端后设置服务器地址,即可实现类似Dropbox的无缝同步体验。

Docker Compose一键部署流程

第六步:安全加固要点

容器化部署虽然已经比传统方式更安全,但仍然有几个关键点需要特别注意。首先是非root用户运行——在Dockerfile中通过 USER 指令指定非root用户,或者在docker-compose.yml中设置 user: 参数,可以防止容器被攻破后攻击者获得宿主机root权限。其次是定期更新镜像——建议每周执行一次 docker compose pull 拉取最新镜像,然后 docker compose up -d 重启服务,及时修复已知漏洞。

数据备份是重中之重。所有容器的重要数据都应该通过 volumes 挂载到宿主机指定目录,然后使用crontab定时执行备份脚本。对于WordPress的wp-content和Nextcloud的文件目录,建议设置每日增量备份,数据库则通过 mysqldumppg_dump 导出SQL文件后压缩保存。备份可以存储在VPS的另一块磁盘上,或者使用rclone同步到Google Drive或OneDrive实现异地容灾。

一张表看明白:各服务端口与配置速查

服务容器端口对外端口数据卷目录
Nginx Proxy Manager80/443/8180/443/81./data, ./letsencrypt
WordPress80通过NPM代理./wp-content
MySQL3306内部-only./db_data
Uptime Kuma30013001./uptime-kuma
Nextcloud808081*./nc_data, ./pg_data
Redis6379内部-only

*Nextcloud的8081端口仅用于直接访问测试,正式使用应通过NPM反向代理配置为子域名访问。

总结:用Docker Compose构建你的私有云生态

通过以上六个步骤,我们在一台普通的VPS上成功部署了博客系统、网站监控、私人云盘和缓存加速四大核心服务,所有服务共享同一个反向代理入口,统一管理SSL证书,并且通过容器隔离确保各服务互不干扰。整个过程没有使用任何付费面板或商业订阅,所有组件都是免费开源的。

这套方案的总成本仅为一台VPS的年费——如果选择高性价比的RackNerdCloudCone年付方案,每年的服务器开销不到200元人民币,却可以拥有完全自主可控的私有云服务。后续你还可以在这个架构上继续扩展——添加MinIO对象存储、安装ntfy推送服务、部署FreshRSS订阅阅读器,甚至跑一个AI推理服务。Docker Compose的扩展性远超你的想象,一台VPS就是一个数据中心。

原创文章,作者:kp51,如若转载,请注明出处:https://www.kepu51.com/instant-messaging/823.html

(0)
上一篇 2026年6月14日 01:13
下一篇 2026年6月18日 01:23

相关推荐

  • VPS CPU 性能怎么测?sysbench+Steal Time 实战完整教程

    如何测试 VPS 的 CPU 性能?新手也能看懂 如果你刚买了台 VPS,看着商家写的配置:4 核 CPU、高性能处理器,听起来很不错,但实际用起来网站加载慢、应用响应卡顿,甚至 SSH 都要转圈半天,这时候就要怀疑一个问题:这台 VPS 的 CPU 性能到底靠不靠谱,是不是被严重超售了? VPS 和自己的电脑不一样,你看不见硬件,也摸不到真实配置,但我们可…

    2026年1月8日
  • HmbCloud 半月灣 VPS 深度评测:三网 CN2 GIA、多机房与建站实战,值得入手吗?

    1. 引言 当你在寻找既能提供稳定 CN2 GIA 优化线路,又能在有限预算内获得可靠支撑的 VPS 时,小众但专业的商家往往能给你意想不到的惊喜。HmbCloud 半月灣(Half Moon Bay Cloud)正是这样一个选手——它以三网 CN2 GIA 直连、多机房覆盖和亲民定价在国内用户中积累了稳定的口碑。相比搬瓦工的高端定位和 DMIT 的企业级价…

    2026年2月12日
  • Oracle Cloud Always Free 2026 还能用吗?ARM 免费配额变化、扣费风险与替代 VPS 选择

    Oracle Cloud Always Free 2026 还能用吗?ARM 免费配额变化、扣费风险与替代 VPS 选择 如果你正在寻找一台免费的云服务器用来学习、跑小型项目或部署个人服务,Oracle Cloud 的 Always Free 层曾经是无可争议的首选。但进入 2026 年,不少用户发现 ARM 实例的免费配额似乎悄悄缩水,账号风控更加严格,偶…

    2026年7月3日
  • LightNode VPS 评测:40+机房、弹性小时计费与新用户余额活动是否值得用

    LightNode VPS 评测:40+机房、弹性小时计费与新用户余额活动是否值得用 你是否正在寻找一款灵活、低门槛的云服务器?传统年付 VPS 往往一次性支出较高,而按小时计费的云服务器允许你按需使用、用完即停,尤其适合短期项目、多地区测试或开发环境。本篇评测将全面解析 LightNode 的最新动态:覆盖 40+ 数据中心、弹性小时计费模式,以及新注册用…

    2026年7月3日
  • VPS 大盘机 DD 安装飞牛 fnOS 保姆级教程

    飞牛 fnOS 是一款基于 Debian 深度开发的国产 NAS 系统,以其简洁的界面、丰富的功能和低硬件要求受到许多 NAS 爱好者的青睐。对于准备自组 NAS 或正在使用黑群晖的用户来说,fnOS 是一个值得尝试的替代方案。如果您手头有闲置的 VPS,可以通过本教程在 VPS 上安装 fnOS,体验其功能并熟悉操作,再决定是否在物理设备上部署。本文将详细…

    2025年6月13日
  • VPS 安全加固完全指南:从 SSH 到 Fail2ban 的实战配置

    2023 年 3 月,一起波及数千台云服务器的 SSH 暴力破解攻击在安全社区引发震动——攻击者在短短 72 小时内,利用密码字典对全球范围内使用默认 22 端口、弱密码的 VPS 发起扫荡式攻击,超过 6,000 台 Debian/Ubuntu 实例被植入挖矿木马。事后溯源发现,这些沦陷的服务器有一个共同特征:从开通的那一刻起,从未做过任何安全配置。拿到 root 密码就直接用,甚至连系统日志都没人看。

    2026年6月29日
  • 弹性IP VPS vs 固定IP VPS:核心区别、测试迁移场景与选购指南(2026)

    弹性IP VPS vs 固定IP VPS:核心区别、测试迁移场景与选购指南(2026) 做过网站搭建或服务器测试的朋友都知道,IP地址是云服务器最基础也最容易忽略的配置项。传统固定IP VPS一旦购买,IP就和实例绑定,想换机房或临时切换项目往往需要重装系统甚至重新下单。而弹性IP(Elastic IP)的出现,让IP管理变得像“搬家”一样方便——你可以随时…

    2026年7月7日
  • 谷歌 Pixel 用户专享:如何领取 12 个月 Gemini AI Pro 会员教程

    谷歌官方 Pixel 用户专享福利,通过特定资格认证流程,即使没有 Pixel 设备也能合法免费领取最长 12 个月的 Gemini AI Pro 会员。完整教程从注册美区账号到激活订阅。

    2026年4月18日 AI教程
  • 1GB 内存 VPS 到底能不能跑 WordPress?

    1. 先别纠结“1GB 为啥只看到 9xxMB” 看到 1GB VPS 登录上去只有 95xMB、97xMB,其实主要是计量单位和虚拟化预留造成的,并不是商家一定“偷内存”: 商家宣传用十进制的 GB: 1GB = 1,000,000,000 字节。 Linux 系统显示用二进制的 GiB: 1GiB = 1,073,741,824 字节。 把 1,000,…

    2025年12月26日
  • Docker镜像加速完全指南:从拉取困境到自建仓库全方案

    Docker Hub在中国大陆的访问越来越不稳定,本文从配置镜像加速器、搭建Registry缓存、部署Harbor企业仓库到使用Zot轻量方案,系统性梳理多种Docker镜像加速方案,帮你彻底解决镜像拉取难题。

    2026年6月18日