Docke搭建:Nginx
2024/12/31大约 3 分钟
参考:
Docke搭建:Nginx
环境依赖
软件/系统 | 版本 | 架构 | 包名 | 备注 |
---|---|---|---|---|
Windows | 11 | x86_64 |
查询镜像
# 查询nginx镜像
docker search nginx
拉取镜像
# 拉取对应的版本镜像
docker pull nginx:latest
# 检查镜像
docker images
启动容器
创建挂载目录
mkdir -p /data/nginx/{conf,html,log}
mkdir -p /data/nginx/conf/conf.d
复制配置文件
# 创建临时nginx容器,用于复制配置文件
docker run --name nginx \
-p 80:80 \
-d nginx:latest
# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /data/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /data/nginx/conf/
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /data/nginx
#停止并删除创建的临时nginx容器
docker stop nginx
docker rm nginx
创建&启动容器
#创建nginx容器,并将nginx目录映射到宿主机
docker run --name nignx \
-p 80:80 \
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /data/nginx/log:/var/log/nginx \
-v /data/nginx/html:/usr/share/nginx/html \
-d nginx:latest
命令结束,输出的是容器的 ID,表示容器已成功启动。
# 检查容器的状态
docker ps -a
# 查看日志
docker logs nginx
访问服务器ip:80例:http://127.0.0.1:80/
进入容器
# 进入Nginx容器
docker exec -it nginx /bin/bash
#检查配置文件是否正确
nginx -t
# 不重启重新加载配置文件
nginx -s reload
Docker Compose 安装 Nginx 指南
一、准备工作
环境要求:
- Docker 已安装(版本 20.10+)
- Docker Compose 已安装(版本 v2.20+)
- 系统:Linux/Windows/macOS(推荐 Linux)
创建目录结构:
mkdir -p ~/nginx-docker/{conf,conf/conf.d,html,log}
二、获取 Nginx 默认配置
# 创建临时容器复制配置文件
docker run --name nginx-temp -d nginx:latest
docker cp nginx-temp:/etc/nginx/nginx.conf ~/nginx-docker/conf/
docker cp nginx-temp:/etc/nginx/conf.d/ ~/nginx-docker/conf/
docker cp nginx-temp:/usr/share/nginx/html/ ~/nginx-docker/
docker stop nginx-temp && docker rm nginx-temp
三、创建 docker-compose.yml
在 ~/nginx-docker
目录创建文件:
version: '3.8'
services:
nginx:
image: nginx:latest
container_name: nginx
ports:
- "80:80"
- "443:443" # 可选 HTTPS 端口
volumes:
- ./conf/nginx.conf:/etc/nginx/nginx.conf
- ./conf/conf.d:/etc/nginx/conf.d
- ./log:/var/log/nginx
- ./html:/usr/share/nginx/html
restart: unless-stopped
networks:
- nginx-net
networks:
nginx-net:
driver: bridge
四、启动 Nginx 服务
cd ~/nginx-docker
docker compose up -d
五、验证操作
检查容器状态:
docker ps -a | grep nginx
测试默认页面:
访问http://localhost
应显示 Nginx 欢迎页查看日志:
docker logs nginx
进入容器:
docker exec -it nginx /bin/bash
六、管理命令
操作 | 命令 |
---|---|
启动服务 | docker compose up -d |
停止服务 | docker compose down |
重启服务 | docker compose restart |
重载配置 | docker exec nginx nginx -s reload |
测试配置 | docker exec nginx nginx -t |
七、自定义配置
修改主配置:
编辑~/nginx-docker/conf/nginx.conf
添加 Server 配置:
在~/nginx-docker/conf/conf.d/
创建mysite.conf
:server { listen 80; server_name example.com; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
更新网页内容:
将文件放入~/nginx-docker/html/
八、反向代理配置示例
location / {
proxy_pass http://app-server:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
注:需要确保被代理服务与 Nginx 在同一 Docker 网络中
常见问题解决
端口冲突:
修改docker-compose.yml
中的端口映射(如8080:80
)配置错误:
docker exec nginx nginx -t # 测试配置文件语法
权限问题:
在 Linux 系统添加:Z
到 volume 路径(如./html:/usr/share/nginx/html:Z
)
此方案结合了链接1的 Docker 部署思路和链接2的配置管理实践,使用 Compose 简化了流程,同时保留了配置灵活性。