【Docker】dockerfile识别当前构建的镜像平台

在编写dockerfile的时候,可能会遇到需要针对不同平台进行不同操作的时候,这需要我们对dockerfile进行针对性修改。

比如opencv的依赖项libjasper-dev在ubuntu18.04上就需要根据不同的平台做不同的处理,关于这个库的安装在另外一篇博客里面有介绍。

在dockerfile中,我们可以通过下面的方式来区分当前编译的镜像平台是什么。

这里使用ARG引入了变量TARGETARCH,这是docker的builder会自动传入的一个变量,指代的是当前构建的镜像的版本。通过这个变量我们就可以写判断语句,根据不同的平台做不同的操作了。

dockerfile 复制代码
ARG TARGETARCH
COPY install/libjasper /tmp/install/libjasper
RUN if [ "$TARGETARCH" = "amd64" ]; then \
        echo "Installing libjasper for amd64"; \
        chmod 777 /tmp/install/libjasper/install_libjasper_amd64.sh; \
        /tmp/install/libjasper/install_libjasper_amd64.sh; \
    elif [ "$TARGETARCH" = "arm64" ]; then \
        echo "Installing libjasper for arm64"; \
        chmod 777 /tmp/install/libjasper/install_libjasper_arm64.sh; \
        /tmp/install/libjasper/install_libjasper_arm64.sh; \
    else \
        echo "Unsupported architecture for install libjasper: $TARGETARCH"; \
        exit 1; \
    fi

问题就解决啦!

本文首发于❄慕雪的寒舍

相关推荐
爱和冰阔落20 小时前
【Linux】Ctrl+C 到底做了什么?从键盘、kill 到 alarm,一次讲清信号的产生
linux·运维·c++·安卓
.柒宇.21 小时前
使用 cri-docker 搭建 Kubernetes 集群完整教程(v1.36.3)
docker·容器·kubernetes·k8s集群安装
JavaPub-rodert21 小时前
Linux 下部署 MongoDB:从安装、配置到生产环境使用
linux·运维·mongodb
starzy199021 小时前
K8s 集群容器管理工具选型与实战指南
云原生·容器
养海绵宝宝的小蜗21 小时前
K8S总结
云原生·容器·kubernetes
画中有画21 小时前
自动化脚本中如何启动/打开app的某个页面
运维·自动化
Yiiz.1 天前
Kubernetes部署
云原生·容器·kubernetes
qizhideyu1 天前
kubernetes
云原生·容器·kubernetes
我星期八休息1 天前
Linux—五种IO模型与非阻塞IO
linux·运维·服务器·网络·数据库·网络协议
hweiyu001 天前
Linux命令:column
linux·运维·服务器