用 Docker Compose 三步跑起一个带持久化的 Nginx 静态站
很多人第一次接触 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
几个要点:
- 选 alpine 版镜像,体积只有几十 MB,小内存机器也能轻松跑。
- volumes 把本地 html 目录挂进容器,并加 :ro 设为只读,改网页不用重建镜像,容器也不能反写宿主机文件。
- restart: unless-stopped 让服务器重启后容器自动拉起,除非你手动停止。
- 端口映射成 8080,避免和宿主机已有的 80 端口服务冲突。
三、启动与验证
在 mysite 目录执行 docker compose up -d,后台启动。用 docker compose ps 查看状态,docker compose logs -f web 跟踪日志。浏览器访问服务器 IP 加端口 8080 即可看到页面;如果打不开,先检查云服务器安全组是否放行 8080,再看本机防火墙。
常见问题
- 修改了 index.html 但页面没变:多半是浏览器缓存,强制刷新即可,容器不用重启。
- 改了 docker-compose.yml:执行 docker compose up -d,Compose 会只重建发生变化的服务。
- 想升级 Nginx 版本:改 image 标签后执行 docker compose pull 再 up -d。
- 清理:docker compose down 会删除容器和网络,但挂载的 html 目录保留在宿主机上,数据不会丢。
小结
Compose 的价值在于配置即文档:一个 YAML 文件就记录了服务怎么跑。养成把每个服务写成 Compose 文件、放进 Git 管理的习惯,迁移服务器、回滚配置都会轻松很多。下一步可以尝试在同一个文件里再加一个后端服务,体验容器之间通过服务名互相访问。
- 点赞
- 收藏
- 关注作者
评论(0)