当前位置: 首页 > article >正文

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

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

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

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

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

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

问题就解决啦!

本文首发于❄慕雪的寒舍


http://www.kler.cn/a/528470.html

相关文章:

  • Spring Boot 中的事件发布与监听:深入理解 ApplicationEventPublisher(附Demo)
  • c++ 定点 new 及其汇编解释
  • 我的创作纪念日——成为创作者的 第365天(1年)
  • 网络安全技术简介
  • Git 版本控制:基础介绍与常用操作
  • 【安全测试】测开方向学习遇到的问题记录
  • QT知识点复习
  • OpenCV 图像旋转
  • 925.长按键入
  • 吴恩达深度学习——优化神经网络
  • php的使用及 phpstorm环境部署
  • 设计模式学习(二)
  • Airflow:深入理解Apache Airflow Task
  • TDengine:no taos in java.library.path
  • 磐维数据库PanWeiDB2.0集群部署安装
  • ArkTS编程规范
  • 大白话讲清楚embedding原理
  • 高速稳定,功能强大的免费下载工具!!
  • Java小白入门教程:HashMap
  • pandas分组
  • Git图形化工具【lazygit】
  • DeepSeek的提示词使用说明
  • 【数据结构】_链表经典算法OJ(力扣/牛客第二弹)
  • 代码随想录——回溯
  • 《数据可视化新高度:Graphy的AI协作变革》
  • Spring MVC消息转换器