文章详情

专注互联网科技,赋能企业数字化发展

Docker部署总翻车?踩完这些坑再不怕

作者:Docker部署总翻车?踩完这些坑再不怕

用 Docker Compose 部署项目,觉得一个 up 命令就能搞定。结果从下午折腾到晚上,端口冲突、环境变量不生效、数据莫名丢了……每个坑都在教做人。 踩了无数次后,我把最常遇到的几个整理出来,提前知道能省不少头发。 🔥 端口改了配置为啥不生效? 配置文件里改了端口映射,重新 up 发现还是老的。原因是容器已创建过,改配置不会自动重建容器。 正确姿势:改配置后强制重建,加了 --force-recreate 才行。 🔥 环境变量写了为啥读不到? 三步排查:env 和 compose 在同级目录吗?变量名有空格或特殊符号?引用了 ${VAR} 但忘了声明? 先 docker compose config 看最终生效的配置,大部分问题在这步就暴露了。 🔥 数据重启后怎么没了? volumes 挂载用了相对路径。A 目录执行 up,相对路径指向 A;B 目录执行,数据去 B 找了,看起来像丢了。 记住:挂载路径用绝对路径或命名卷。 🔥 数据库还没起来应用就崩了 depends_on 只控启动顺序不保证服务就绪。容器起来不代表 MySQL ready。 正确做法:数据库加 healthcheck,应用里用 service_healthy 作启动条件。 🔥 缩进用 Tab 调试了一下午 YAML 缩进只能用空格不能 Tab。注释别和配置挤一行,冒号后要有空格。格式不对 compose 不给明确报错,只抛个莫名其妙的信息。 🔥 不同 compose 文件怎么通信? 默认不在同一网络。要么全写进一个 compose 文件,要么提前建 external network 共享。 🔥 镜像怎么都拉不下来? 配镜像加速器是基本操作。但冷门镜像加速器也没缓存,提前单独 pull 测试能拉再写进 compose。 这些坑每个都很小,但藏着都是凌晨三点救火的隐患。提前扫一遍,上线那天能睡个好觉。 #Docker #DockerCompose #后端开发 #程序员日常 #运维避坑

返回新闻列表