容器化部署nginx项目
一、 核心故障复盘与根因分析
二、 技术思维维度的经验总结
坚持分层验证,杜绝凭空猜测
排查网络与服务链路,必须遵循:
容器进程运行状态 (docker ps)->容器内部监听 (ss -tulpn)->宿主机端口映射连通 (curl -I 127.0.0.1:端口)->宿主机外层反代 (proxy_pass)->本地解析 (hosts)。当看到 403 时,说明前面的网络打通已经成功了 90%,排查重心应立即从“网络层”切回“文件系统与权限层”。
Docker 构建中的上下文与路径意识
ADD指令虽然方便,但会自动解压,极易因为压缩包内部的目录结构引发路径二次嵌套问题。在制作镜像前,养成在宿主机使用
tar -tf xxx.tar.gz | head预览包内相对路径的习惯,或者在打包阶段就统一使用tar -zcf ... -C dir .去除多余根目录。
宿主机业务与容器业务的边界感
宿主机如果已经承担了特定网络角色(如已运行宿主机 Nginx 占用了 80/81 端口),新容器就不能再无脑占用标准端口。
优雅的架构应该是:宿主机 Nginx 作为顶层统一流量入口,根据域名(Server Name)反向代理转发给内层不同容器映射出来的私有端口。
评论