具体业务场景
- 上游核心系统每天会执行多个跑批任务,营业日期有时会发生变动,下游应用系统的时间需要跟着核心变动,先前应用落在裸金属/虚拟机中,系统管理员可直接执行 date 命令对节点时间进行更改
- 应用容器化改造后,管理员无法直接直接更改容器内时间(提示没有权限),且容器内是共享主机时间,所以主机时间也不可能进行更改(会影响其他应用系统)
faketime描述 参考链接 - libfaketime 是截断应用进程去调用系统日期、时间,并且可以使用自身 faketime 、环境变量等多种方式 为应用进程自定义时间的一种手段
具体实现逻辑 - 上游应用提供接口给到下游应用系统,然后下游应用系统获取时间,判断自身时间与其是否一致,不一致进行更改,从而实现应用自动调整应用内时间,无需人工干预
基础镜像的构建
Coreapp-Dockerfile-上游
FROM python:3.7.11
COPY ./site-packages /usr/local/lib/python3.7/site-packages/
WORKDIR /app/
COPY coreapp_api.py /app/
EXPOSE 3000
CMD [“python3.7 /app/coreapp_api.py”]
Coreapp_api.py(时间接口)-上游应用