为什么用 Docker 部署静态站点

传统方式在服务器上直接装 Nginx:

BASH
apt install nginx
vi /etc/nginx/sites-enabled/default
systemctl restart nginx

问题:

Docker 方式:

BASH
docker compose up -d

一行命令,环境完全一致,任何 Linux 发行版都能跑。

Dockerfile

DOCKERFILE
FROM nginx:1.27-alpine
COPY site/ /usr/share/nginx/html/
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

选择 alpine 版本的原因:

镜像大小
nginx:1.27~190MB
nginx:1.27-alpine~45MB

Alpine 体积小、攻击面少,生产环境首选。

docker-compose.yml

YAML
services:
  blog:
    image: nginx:1.27-alpine
    container_name: blog
    ports:
      - "80:80"
    volumes:
      - ./site:/usr/share/nginx/html:ro
      - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
    restart: unless-stopped

关键配置解读:

Nginx 配置要点

NGINX
server {
    listen 80;
    server_name www.lihuanyu.icu;

    root /usr/share/nginx/html;
    index index.html;

    # Gzip 压缩
    gzip on;
    gzip_types text/css application/javascript text/xml;
    gzip_min_length 256;
    gzip_comp_level 6;

    # 静态资源缓存 30 天
    location ~* \.(js|css|png|jpg|woff2)$ {
        expires 30d;
        add_header Cache-Control "public, immutable";
    }

    # 安全头
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-Frame-Options "SAMEORIGIN" always;

    location / {
        try_files $uri $uri/ =404;
    }
}

常用运维命令

BASH
# 启动
docker compose up -d

# 查看日志
docker compose logs -f --tail=50

# 重启(更新配置后)
docker compose restart

# 进入容器排查
docker exec -it blog sh

# 更新服务(CI/CD 中用)
docker compose down && docker compose up -d

总结

Docker 部署静态站点的核心优势:环境一致、迁移简单、配置即代码。对于运维工程师来说,这是基础中的基础,但也是面试必问的内容。

License

Author: 啊🐟

Link: https://www.lihuanyu.icu/posts/docker-nginx-deploy/

License: 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。