打包容器镜像后配置文件怎么找不到了?

60 阅读1分钟

问题

将应用打包成 Docker 镜像后,使用 k8s 发布新版本。应用一直找不到配置文件导致不停地 panic 。。。(慌得一批,幸好 k8s 回滚比较方便😅)

排查

  1. 检查 Dockerfile 确认 COPY 了配置文件到镜像中
...
WORKDIR /
COPY config /config
...
  1. 检查代码中,访问该文件的路径 "/config/xxx.yaml" 没问题
  2. 看了很久,Dockerfile 和代码都没发现问题,并且在本地使用该镜像启动容器也能成功。于是想到是不是 k8s 侧部署的问题,最终发现 k8s Deployment 配置 yaml 中,将容器的 /config 目录挂载出去了。。。
 ... 
 
    containers:
    - env:
      volumeMounts:
        - mountPath: /config
          name: volume-xxx
    volumes:
            - name: volume-xxx

总结

问题比较蠢,但我还是花了很久排查,一直在想是不是 Docker 打包过程有问题;试了很久才想到是不是 k8s 那边配置有问题,希望能帮到和我犯同样错误的人😊