Docker快速部署Nginx全攻略,901-008_高级系统架构设计师-考试范围-系统质量属性与架构评估。
·
Docker 部署 Nginx 完整指南
准备工作
确保已安装 Docker 和 Docker Compose。验证安装是否成功:
docker --version
docker-compose --version
拉取 Nginx 镜像
从 Docker Hub 获取官方 Nginx 镜像:
docker pull nginx:latest
运行 Nginx 容器
使用以下命令启动一个临时容器:
docker run --name my-nginx -p 80:80 -d nginx
-p 80:80:将主机的 80 端口映射到容器的 80 端口。-d:后台运行容器。
验证运行状态
检查容器是否正常运行:
docker ps
访问 http://localhost 应显示 Nginx 默认欢迎页。
挂载自定义配置
创建本地目录存放 Nginx 配置文件和网站内容:
mkdir -p ~/nginx-config/conf.d
mkdir ~/nginx-config/html
将默认配置复制到本地目录:
docker cp my-nginx:/etc/nginx/nginx.conf ~/nginx-config/
docker cp my-nginx:/etc/nginx/conf.d/default.conf ~/nginx-config/conf.d/
停止并删除临时容器:
docker stop my-nginx
docker rm my-nginx
重新启动容器并挂载本地目录:
docker run --name my-nginx \
-p 80:80 \
-v ~/nginx-config/nginx.conf:/etc/nginx/nginx.conf \
-v ~/nginx-config/conf.d:/etc/nginx/conf.d \
-v ~/nginx-config/html:/usr/share/nginx/html \
-d nginx
使用 Docker Compose 部署
创建 docker-compose.yml 文件:
version: '3'
services:
nginx:
image: nginx:latest
ports:
- "80:80"
volumes:
- ~/nginx-config/nginx.conf:/etc/nginx/nginx.conf
- ~/nginx-config/conf.d:/etc/nginx/conf.d
- ~/nginx-config/html:/usr/share/nginx/html
restart: unless-stopped
启动服务:
docker-compose up -d
配置 SSL 证书
生成自签名证书(仅测试用途):
mkdir ~/nginx-config/ssl
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout ~/nginx-config/ssl/nginx.key \
-out ~/nginx-config/ssl/nginx.crt
修改 default.conf 启用 HTTPS:
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
location / {
root /usr/share/nginx/html;
index index.html;
}
}
更新 docker-compose.yml 挂载 SSL 目录:
volumes:
- ~/nginx-config/ssl:/etc/nginx/ssl
重启服务:
docker-compose restart
日志管理
查看容器日志:
docker logs my-nginx
实时跟踪日志:
docker logs -f my-nginx
性能优化
限制容器资源使用:
# 在 docker-compose.yml 中添加
resources:
limits:
cpus: '1'
memory: 512M
启用 Nginx 缓存:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
高级配置
启用 HTTP/2:
server {
listen 443 ssl http2;
# 其他配置...
}
配置 Gzip 压缩:
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml;
故障排查
检查容器内部文件:
docker exec -it my-nginx bash
验证 Nginx 配置:
docker exec my-nginx nginx -t
常见问题
端口冲突:确保主机 80 或 443 端口未被占用。
权限问题:本地挂载的文件需对容器内用户可读(通常为 nginx 用户)。
配置不生效:修改配置文件后需重启容器或重载 Nginx:
docker exec my-nginx nginx -s reload
更多推荐


所有评论(0)