用 Docker Compose 三步跑起一个带持久化的 Nginx 静态站

举报
yd_246656088 发表于 2026/11/09 14:16:20 2026/11/09
【摘要】 很多人第一次接触 Docker,会先学 docker run,但真正部署时更常用的是 Docker Compose:它把端口、挂载、重启策略都写进一个 YAML 文件,换台机器也能一条命令复现。下面用一个最小的静态站点演示完整流程。一、准备目录在服务器上新建目录 mysite,里面放两样东西:html 文件夹(存网页)和 docker-compose.yml。html 里写一个 index....

很多人第一次接触 Docker,会先学 docker run,但真正部署时更常用的是 Docker Compose:它把端口、挂载、重启策略都写进一个 YAML 文件,换台机器也能一条命令复现。下面用一个最小的静态站点演示完整流程。

一、准备目录

在服务器上新建目录 mysite,里面放两样东西:html 文件夹(存网页)和 docker-compose.yml。html 里写一个 index.html,内容随意,例如一行 Hello Compose。

二、编写 docker-compose.yml

services:
web:
image: nginx:1.27-alpine
ports:
- “8080:80”
volumes:
- ./html:/usr/share/nginx/html:ro
restart: unless-stopped

几个要点:

  1. 选 alpine 版镜像,体积只有几十 MB,小内存机器也能轻松跑。
  2. volumes 把本地 html 目录挂进容器,并加 :ro 设为只读,改网页不用重建镜像,容器也不能反写宿主机文件。
  3. restart: unless-stopped 让服务器重启后容器自动拉起,除非你手动停止。
  4. 端口映射成 8080,避免和宿主机已有的 80 端口服务冲突。

三、启动与验证

在 mysite 目录执行 docker compose up -d,后台启动。用 docker compose ps 查看状态,docker compose logs -f web 跟踪日志。浏览器访问服务器 IP 加端口 8080 即可看到页面;如果打不开,先检查云服务器安全组是否放行 8080,再看本机防火墙。

常见问题

  1. 修改了 index.html 但页面没变:多半是浏览器缓存,强制刷新即可,容器不用重启。
  2. 改了 docker-compose.yml:执行 docker compose up -d,Compose 会只重建发生变化的服务。
  3. 想升级 Nginx 版本:改 image 标签后执行 docker compose pull 再 up -d。
  4. 清理:docker compose down 会删除容器和网络,但挂载的 html 目录保留在宿主机上,数据不会丢。

小结

Compose 的价值在于配置即文档:一个 YAML 文件就记录了服务怎么跑。养成把每个服务写成 Compose 文件、放进 Git 管理的习惯,迁移服务器、回滚配置都会轻松很多。下一步可以尝试在同一个文件里再加一个后端服务,体验容器之间通过服务名互相访问。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。