用 Docker 一行命令起一个本地静态网站
本地想快速看一眼写好的静态页面,常见的办法是装 Nginx、起 Python http.server,或者直接双击 HTML 文件。后两种办法各有毛病:双击打开走的是本地文件协议,fetch 请求、前端路由、ES Module 都会出问题;本机装服务又会把环境弄脏。Docker 提供了一个干净的办法:不用在本机装任何服务,一行命令就能把当前目录变成一个可访问的网站,测完随手删掉,不留痕迹。
一、准备工作
只需要两样东西:已经安装好的 Docker,和一个放着静态文件的目录。先用 docker --version 确认 Docker 能用,再新建一个目录,放一个最简单的 index.html,例如:
<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>你好,Docker</title></head>
<body><h1>我的第一个本地静态网站</h1></body></html>
二、核心命令
在网站目录里执行:
docker run -d --name my-site -p 8080:80 -v "$PWD":/usr/share/nginx/html:ro nginx:alpine
回车后 Docker 会拉取 nginx:alpine 镜像并启动一个容器。在浏览器地址栏输入 localhost:8080,就能看到页面。命令里每个参数都有用:-d 让容器后台运行;--name my-site 给容器起个名字,方便之后管理;-p 8080:80 把容器的 80 端口映射到本机的 8080 端口;-v "$PWD":/usr/share/nginx/html:ro 把当前目录挂载到 Nginx 默认的网站根目录,:ro 表示只读挂载,容器改不了你的文件;nginx:alpine 是官方轻量镜像,体积只有几十 MB,拉取很快。
三、验证与日常操作
执行 docker ps 可以看到 my-site 正在运行,docker logs my-site 能查看 Nginx 的访问日志。改了 HTML、CSS 后直接刷新浏览器就能看到效果,不用重启容器。如果页面没更新,先确认文件已保存,再用 Ctrl+F5 强制刷新,排除浏览器缓存干扰。
四、停止与清理
测完之后执行 docker stop my-site 停止容器,再执行 docker rm my-site 删除容器。镜像可以留着,下次再用同一行命令秒起;想连镜像一起清理就执行 docker rmi nginx:alpine。整个过程不会在本机留下任何残留配置。
五、注意事项
第一,-v 挂载的是目录而不是单个文件,且要用绝对路径,$PWD 在 macOS 和 Linux 终端里都能用,Windows 命令提示符改成 %cd%,PowerShell 用 ${PWD}。第二,本机 8080 端口如果被别的程序占用,启动会报错,把 -p 改成 8081:80 换个端口即可,也可以用 docker ps 看看是哪个容器在占用。第三,目录里不要放含密码、密钥的敏感文件,容器里的进程原则上能读到挂载目录的内容。第四,只读挂载 :ro 是刻意加上去的,防止容器内程序意外改写你的源文件。第五,这只是本地调试的办法,生产环境发布要另外配置域名、HTTPS 证书和访问控制,不要直接把这个命令搬到公网服务器上。第六,不需要加 --privileged 这类高权限参数,跑一个静态站用不到它,权限越小越安全。
一句话总结:准备好目录和 index.html,一行 docker run 就能把本地静态网站跑起来,改文件即时生效,测完一键清理。工作中临时要给同事预览页面、验证前端构建产物时,这个办法比装环境快得多,值得放进自己的工具箱里。
- 点赞
- 收藏
- 关注作者
评论(0)