• Python alpine镜像设置时区解决日志时间错误问题


    Alpine镜像设置时区的方式

    2种方式

    • 使用 tzdata 包, 有个大坑
    • 使用 alpine-conf 包,推荐

    方式1: tzdata

    使用tzdata, 也是网上推荐最多的解决办法

    FROM python:3.8-alpine
    
    # 镜像加速, 添加alpine apk源(中科大)
    RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
    
    # 解决时区问题
    ENV TZ=Asia/Shanghai
    RUN apk add --no-cache tzdata \
        && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
        && apk del tzdata
    
    WORKDIR /workspace
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    这里是有问题的,最后删除tzdata之后,时区设置是无效的

    时区无效

    填坑

    **方式1:**安装完成后不删除 tzdata

    FROM python:3.8-alpine
    
    # 镜像加速, 添加alpine apk源(中科大)
    RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
    
    # 解决时区问题
    ENV TZ=Asia/Shanghai
    RUN apk add --no-cache tzdata \
        && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    
    WORKDIR /workspace
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    构建镜像

    最后的镜像大小: 44.5 MB

    **方式2:**不设置环境变量

    FROM python:3.8-alpine
    
    # 镜像加速, 添加alpine apk源(中科大)
    RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
    
    # 解决时区问题
    RUN apk add --no-cache tzdata \
        && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
        && apk del tzdata
    
    WORKDIR /workspace
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    这种方式删除tzdata之后,包的体积为:43.2MB


    方式2: alpine-conf

    使用alpine-conf

    FROM python:3.8-alpine
    
    # 镜像加速, 添加alpine apk源(中科大)
    RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
    
    # 解决时区问题
    ENV TZ=Asia/Shanghai
    RUN apk add alpine-conf && \
        /sbin/setup-timezone -z Asia/Shanghai && \
        apk del alpine-conf
    
    WORKDIR /workspace
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    构建后的镜像大小:45.5 MB, 体积比第一种方式大了一点,但是这个方式是官方推荐的,坑少,按照完成后可以直接删除这个包

    进入容器,查看时间是否为CST时间

    查看容器内时间

  • 相关阅读:
    终于找到你!数字化时代的秘密武器
    基于深度学习的组织病理学图像IDC检测方法
    Vite 与 Vue Cli 对比 - 尤雨溪: Vite 会取代 vue-cli 吗?
    Canvas 获取文本宽度使用ctx.measureText
    C#操作MySQL从入门到精通(22)——创建表与操纵表
    KingbaseES V8R6集群运维案例之---sys_rewind应用分析
    idea基础配置笔记
    数据库定时备份linux篇
    LeetCoed617:合并二叉树
    【Linux系统化学习】探索进程的奥秘 | 第一个系统调用
  • 原文地址:https://blog.csdn.net/yueguangMaNong/article/details/126137474