使用Docker-Compose快速部署Nginx服务

前言

Nginx是一款高性能的Web服务器和反向代理工具,结合Docker Compose可以实现快速部署和配置管理。通过本教程可以学习到docker-compose.yml文件一键部署Nginx服务。


准备工作

  1. 确保已安装 Docker 和 Docker Compose:

    css 复制代码
    bashCopy Code
    # 检查版本(Docker 20.10+,Docker Compose 2.0+)
    docker --version
    docker-compose --version
  2. 创建项目目录:

    bash 复制代码
    mkdir nginx-docker && cd nginx-docker

配置 Docker Compose 文件

  1. 创建 docker-compose.yml

    bash 复制代码
    touch docker-compose.yml
  2. 编辑文件内容:

    yaml 复制代码
    version: '3.8'  # 使用兼容的 Compose 版本
    
    services:
      nginx:
        image: nginx:latest  # 使用官方最新镜像
        container_name: my-nginx  # 自定义容器名称
        restart: always  # 自动重启
        ports:
          - "80:80"     # 映射宿主机80端口到容器80端口
          - "443:443"   # 如需HTTPS可启用
        volumes:
          - ./html:/usr/share/nginx/html  # 挂载静态网站目录
          - ./nginx.conf:/etc/nginx/nginx.conf  # 挂载自定义配置文件
          - ./conf.d/:/etc/nginx/conf.d/  # 子配置目录挂载
          - ./logs:/var/log/nginx  # 挂载日志目录
        networks:
          - nginx-net  # 自定义网络(可选)
    
    networks:
      nginx-net:
        driver: bridge

启动 Nginx 服务

  1. 创建所需目录:

    arduino 复制代码
    mkdir html logs conf.d
  2. 启动容器(后台模式):

    复制代码
    docker-compose up -d
  3. 验证服务状态:

    shell 复制代码
    docker-compose ps -a
    # 或浏览器访问 http://localhost

自定义配置

1. 修改默认页面

html 目录中创建 index.html

bash 复制代码
echo "<h1>Hello Docker Nginx!</h1>" > html/index.html

2. 自定义 Nginx 配置

  1. 生成默认配置文件:

    bash 复制代码
    docker run --rm nginx cat /etc/nginx/nginx.conf > nginx.conf
  2. 修改 nginx.conf 后重启服务:

    css 复制代码
    bashCopy Code
    docker-compose restart nginx

常用命令

命令 说明
docker-compose logs -f 查看实时日志
docker-compose restart nginx 重启服务
docker-compose down 停止并删除容器
docker-compose exec nginx bash 进入容器终端

注意事项

  1. 端口冲突‌:确保宿主机 80/443 端口未被占用
  2. 配置文件权限‌:挂载的配置文件需具有正确权限
相关推荐
JavaGuide几秒前
今年小红书后端开出了炸裂的薪资!
后端·面试
L.EscaRC12 分钟前
Redisson在Spring Boot中的高并发应用解析
java·spring boot·后端
苏三的开发日记21 分钟前
MySQL事务隔离级别及S与X锁
后端
阑梦清川25 分钟前
claude全面封杀国产IDE,trae已经无法使用claude大模型了
后端
lzptouch32 分钟前
Django项目
后端·python·django
Emrys_1 小时前
🚀 深入理解Java并发“王牌”:ConcurrentHashMap
后端
金銀銅鐵1 小时前
[Java] 浅析 Map.of(...) 方法和 Map.ofEntries(...) 方法
java·后端
间彧2 小时前
如何通过多阶段构建优化SpringBoot应用的Docker镜像大小?
后端
他在笑2 小时前
Mybatis-plus 源码执行全流程解析
后端