跳到主要内容

nginx

一、Docker 原生命令部署 Nginx(快速验证 / 临时部署)

适合快速测试或单容器临时使用,核心是通过 run 命令挂载卷、映射端口,步骤精简且聚焦核心。

1. 前置准备:创建本地持久化目录

# 创建统一的Nginx部署目录,存放配置、静态文件、日志
mkdir -p /usr/local/nginx/{conf,html,logs}

# 复制Nginx默认配置/静态文件到本地(方便自定义)
# 启动临时容器复制文件后自动删除
docker run --rm nginx:1.25 cp /etc/nginx/nginx.conf /usr/local/nginx/conf/
docker run --rm nginx:1.25 cp -r /etc/nginx/conf.d/ /usr/local/nginx/conf/
docker run --rm nginx:1.25 cp -r /usr/share/nginx/html/ /usr/local/nginx/

2. 启动 Nginx 容器(生产级参数)

# 停止旧容器(如有)
docker stop mynginx && docker rm mynginx

# 运行容器:挂载卷+端口映射+自动重启
docker run -d \
--name mynginx \
-p 80:80 \
--restart=always \
-v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /usr/local/nginx/html:/usr/share/nginx/html \
-v /usr/local/nginx/logs:/var/log/nginx \
nginx:1.25

3. 验证部署

访问 http://服务器IP,能看到 Nginx 默认页面即部署成功;如需修改配置 / 静态文件,直接改本地 /usr/local/nginx 下的文件即可。


二、Docker Compose 部署 Nginx(推荐 / 标准化部署)

Docker Compose 通过 docker-compose.yml 配置文件统一管理容器的端口、卷、重启策略等,支持一键启停、配置版本控制,是生产环境 / 多容器场景的首选。

1. 安装 Docker Compose(Linux 系统,Windows/Mac 自带)

# 下载Compose二进制文件(适配Docker Engine)
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 添加执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 验证安装(显示版本即成功)
docker-compose --version

2. 创建 Compose 部署目录 & 配置文件

步骤 1:创建目录结构(复用之前的持久化目录,或重新创建)

# 复用已有目录(推荐),或重新创建:
# mkdir -p /usr/local/nginx-compose/{conf,html,logs}

步骤 2:编写 docker-compose.yml 配置文件

/usr/local/nginx-compose 目录下创建 docker-compose.yml(核心配置文件),内容如下(带详细注释):

# Compose文件版本(需匹配Docker版本,推荐3+)
version: '3.8'

# 定义服务(可多个,这里仅Nginx)
services:
# 服务名:nginx(自定义,后续命令用这个名)
nginx:
# 镜像版本(指定版本,避免latest不稳定)
image: nginx:1.25
# 容器名(可选,默认是目录名_服务名_1)
container_name: mynginx-compose
# 端口映射:主机80端口 -> 容器80端口
ports:
- "80:80"
# 如需HTTPS,添加443端口:- "443:443"
# 卷挂载(本地目录 -> 容器目录,实现持久化)
volumes:
- ./conf/nginx.conf:/etc/nginx/nginx.conf
- ./conf/conf.d:/etc/nginx/conf.d
- ./html:/usr/share/nginx/html
- ./logs:/var/log/nginx
# 重启策略:总是重启(生产必备)
restart: always
# 网络(默认桥接,如需自定义网络可新增networks字段)
networks:
- nginx-network

# 自定义网络(可选,容器间通信更安全)
networks:
nginx-network:
driver: bridge

步骤 3:复制默认配置到 Compose 目录

# 进入Compose目录
cd /usr/local/nginx-compose

# 复制Nginx默认配置/静态文件到本地
docker run --rm nginx:1.25 cp /etc/nginx/nginx.conf ./conf/nginx.conf
docker run --rm nginx:1.25 cp -r /etc/nginx/conf.d/ ./conf/
docker run --rm nginx:1.25 cp -r /usr/share/nginx/html/ ./html/

3. 启动 / 管理 Nginx(Compose 核心命令)

所有操作在 docker-compose.yml 所在目录执行:

启动服务(后台运行)

# 后台启动(-d),首次启动/配置修改后加--build(这里无自定义镜像,可省略)
docker-compose up -d

验证启动状态

# 查看Compose管理的容器状态
docker-compose ps

# 查看Nginx日志(实时跟踪)
docker-compose logs -f nginx

常用 Compose 操作(核心)

# 热加载Nginx配置(修改本地配置后执行,无需重启容器)
docker-compose exec nginx nginx -s reload

# 进入Nginx容器(临时操作)
docker-compose exec nginx /bin/bash

# 重启Nginx服务
docker-compose restart nginx

# 停止服务(保留容器/卷)
docker-compose stop

# 停止并删除容器(-v删除卷,--rmi all删除镜像,慎用)
docker-compose down -v

# 查看服务详情
docker-compose config # 验证配置文件语法
docker-compose top # 查看容器内进程

4. 自定义配置 / 静态文件(和原生方式一致)

  • 修改静态文件:直接替换 /usr/local/nginx-compose/html 下的 index.html、CSS/JS 等
  • 修改 Nginx 配置:编辑 /usr/local/nginx-compose/conf/conf.d/default.conf(如反向代理、HTTPS),改完执行 docker-compose exec nginx nginx -s reload 热加载

三、两种部署方式对比

特性Docker 原生命令Docker Compose
配置方式命令行参数配置文件(yml),可版本控制
多容器管理需逐个命令操作一键启停所有服务
可读性 / 维护性参数多,易忘 / 易输错配置文件清晰,便于团队协作
扩展能力扩展多容器(如 Nginx+PHP)复杂只需在 yml 中新增服务,一键部署
适用场景快速验证、临时部署生产环境、长期维护、多容器场景

总结

  1. Docker 原生命令:适合快速验证 Nginx 部署,核心是 run 命令 + 卷挂载(配置 / 静态文件 / 日志)
  2. Docker Compose:是推荐方式,通过 docker-compose.yml 统一管理容器配置,支持一键启停、热加载,适配生产 / 多容器场景
  3. 生产环境配置:必加 restart: always 保证服务可用性,且通过卷挂载实现配置 / 数据持久化,修改配置后优先用 nginx -s reload 热加载