背景
最近发现了一个问题,有个项目接口偶尔会出现访问不到的情况,细细排查看下来,原来是因为容器内的日志太大了,触发了回收的阈值,pod
被回收重新调度后,如果随机分配到了其它节点的话,流量可能打不到新建的容器里,其实我们是有日志自动清理机制的,我们项目的日志是在 /data/log
目录下,由容器内部 mount
到宿主机,这是没有问题的,但是编译的 nginx
基础镜像里的日志是指到 /data
目录下的,所以导致 nginx
的日志文件在容器内,无法自动清理,nginx
日志变得很大后,就引发了上述问题。最佳的解决方案就是改基础镜像喽,修改 nginx
的 access
和 error
日志的路径,指到 /data/log
下,这样就可以 mount
到宿主机,进行日志自动清理了。
问题
修改了 nginx 基础镜像后,重新编译居然失败了,以前可以运行的 RUN yum install -y xxx
突然运行报错了,错误信息如下:
Rpmdb checksum is invalid: dCDPT(pkg checksums): sudo.x86_64 0:1.8.6p3-29.el6_9 - u
调研了一圈发现有人说是 rpm 数据库损坏需要重建。因此需要在 yum install ...
前使用 rpm --rebuilddb
重建数据库。比如:
RUN rpm --rebuilddb && yum install -y ...
如果有多条 RUN yum install -y ...
指令,需要在每条之前都加上 rpm --rebuilddb
,至此,运行顺利通过,nginx-php-fpm基础镜像编译成功。
此处评论已关闭