CentOS 部署容器化 Nginx:Dockerfile 编写、镜像构建与容器自启动
·
CentOS 部署容器化 Nginx 指南
1. Dockerfile 编写
创建基础配置文件:
# 使用官方Nginx镜像
FROM nginx:alpine
# 移除默认配置文件
RUN rm /etc/nginx/conf.d/default.conf
# 添加自定义配置
COPY nginx.conf /etc/nginx/conf.d/
# 暴露80端口
EXPOSE 80
# 启动Nginx
CMD ["nginx", "-g", "daemon off;"]
创建配套的 nginx.conf 配置文件:
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html;
}
}
2. 镜像构建
执行构建命令:
# 构建镜像(注意最后有个点)
docker build -t my-nginx:v1 .
# 验证镜像
docker images | grep my-nginx
输出示例:
REPOSITORY TAG IMAGE ID CREATED SIZE
my-nginx v1 a1b2c3d4e5f 2 minutes ago 23.5MB
3. 容器自启动配置
(1) 直接运行容器
docker run -d \
--name nginx-container \
--restart always \ # 关键自启动参数
-p 8080:80 \
my-nginx:v1
(2) 通过Systemd管理(推荐生产环境)
创建服务文件 /etc/systemd/system/nginx-container.service:
[Unit]
Description=Nginx Container
After=docker.service
Requires=docker.service
[Service]
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker rm -f nginx-container
ExecStart=/usr/bin/docker run --name nginx-container -p 8080:80 my-nginx:v1
ExecStop=/usr/bin/docker stop nginx-container
Restart=always
RestartSec=30
[Install]
WantedBy=multi-user.target
启用服务:
systemctl daemon-reload
systemctl enable nginx-container # 设置开机自启
systemctl start nginx-container # 立即启动
4. 验证部署
# 检查容器状态
docker ps -f name=nginx-container
# 测试访问
curl http://localhost:8080
正常应返回Nginx欢迎页面HTML代码。
常见问题处理
-
端口冲突:
netstat -tuln | grep 8080 # 检查端口占用修改
docker run的-p参数或配置文件端口号 -
配置更新:
docker exec nginx-container nginx -s reload -
日志查看:
docker logs -f nginx-container
最佳实践:
- 使用
alpine版本镜像减小体积- 通过
-v参数挂载配置文件实现热更新- 生产环境建议添加TLS证书和访问控制
更多推荐
所有评论(0)