• 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时间

    查看容器内时间

  • 相关阅读:
    跨域访问时SameSite设置级别导致的SetCookie失败的问题分析及解决
    LeetCode 面试题 08.14. 布尔运算
    Swagger(5):Swagger2常用注解
    交换机之trunk access hybrid 以及vlan深入理解
    微软承诺:将积极研究维修权问题
    机器学习——逻辑回归(LR)
    论回归测试的重要性
    Java常量池理解
    Java 数据结构
    【C++入门】命名空间详解(从零开始,冲击蓝桥杯)
  • 原文地址:https://blog.csdn.net/yueguangMaNong/article/details/126137474