如何获取OpenHarmony编译镜像对应的Dockerfile文件

冷钦街 显示全部楼层 发表于 2023-12-10 21:03:40
【问题描述】
问题现象和发生的背景
当前OpenHarmony南向设备开发提供了docker镜像,比较方便,不过当前提供了多个版本。
目前我找到的相关文档有

https://gitee.com/openharmony/docs/tree/master/docker

fakename.png


以及
https://gitee.com/openharmony/do ... gettools-acquire.md

fakename.png fakename.png


相关的代码,截图,日志信息


我尝试过的解决方法和结果


我想要达到的结果:

我现在的需求是:
将目前已经支持的版本通过同一个docker镜像来编译,所以需要将上述镜像进行整合,请问如何获取这些镜像对应的Dockerfile。

【运行环境】
硬件:
ROM版本:
DevEvoStudio版本:
SDK版本:
您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

精彩评论3

深开鸿_王石

沙发 发表于 2023-12-11 09:10:05
要导出 Docker 镜像的 Dockerfile,需要使用以下步骤:

确保你已经安装并正确配置了 Docker。
使用以下命令列出本地的 Docker 镜像,找到你想导出的镜像的 ID 或名称:
docker images
使用以下命令将镜像保存为 tar 文件:
docker save -o <导出路径/文件名.tar> <镜像ID或名称>
例如:
docker save -o /path/to/myimage.tar myimage:latest
使用以下命令将 tar 文件解压缩,并提取其中的 Dockerfile:
mkdir extract
tar -xvf <导出路径/文件名.tar> -C extract
cp extract/<镜像ID或名称>/Dockerfile <目标路径/Dockerfile>
例如:
mkdir extract
tar -xvf /path/to/myimage.tar -C extract
cp extract/myimage*/Dockerfile /path/to/target/Dockerfile
现在你可以在目标路径中找到导出的 Dockerfile。
这样,你就成功地从 Docker 镜像中导出了 Dockerfile。请注意,导出的 Dockerfile 可能会有一些镜像特定的指令,因此你可能需要根据需要进行适当的修改和调整。

最后,个人觉得合并多个dockerfile不如自动选择加载不同镜像,再进行编译,而不应该合并多个镜像,当然有可能现在环境都差不多,若是如此,合成一个也是可以试试的,静候佳音

dragon

板凳 发表于 2023-12-11 16:31:42
不妨换个思路,使用标准系统的标签为3.2的docker镜像,然后进docker,安装hb,就可以选择并编译轻量系统、小型系统和标准系统。

冷钦街

地板 发表于 2023-12-19 19:43:36
最终还是通过原始的docker history --no-trunc image:label    获取到Dockerfile信息,并进行了整合。

整合后的Dockerfile如下,已通过验证
  1. FROM ubuntu:20.04

  2. WORKDIR /root


  3. ARG DEBIAN_FRONTEND=noninteractive

  4. RUN TZ=Asia/Shanghai && sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list  \
  5.     && sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list  \
  6.     && apt-get update -y  \
  7.     && apt-get install -y locales default-jre default-jdk libelf-dev bc rsync mtools dosfstools \
  8.     wget curl ssh vim ccache libxi-dev libxrandr-dev libxcursor-dev libxinerama-dev libpixman-1-dev \
  9.     qemu gcc-arm-none-eabi xsltproc lib32z1-dev libgl1-mesa-dev libx11-dev libxml2-dev kmod \
  10.     libssl-dev openssl scons python3.8 mtd-utils binutils libglib2.0-dev genext2fs apt-utils gnupg \
  11.     zlib1g-dev m4 u-boot-tools build-essential unzip make libc6-dev-i386 x11proto-core-dev g++ \
  12.     libncurses5 libtinfo5 git-lfs gcc cpio perl ruby flex bison python3-pip zip git gperf \
  13.     doxygen liblz4-tool  python3.8-distutils libffi-dev zlib* e2fsprogs device-tree-compiler \
  14.     git-core libdwarf-dev lib32ncurses5-dev gnutls-bin gcc-arm-linux-gnueabi  \
  15.     binutils-dev grsync xxd jfsutils reiserfsprogs xfsprogs squashfs-tools pcmciautils \
  16.     quota ppp libtinfo-dev libncurses5-dev libncursesw5 libstdc++6 \
  17.     && wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/gcc-arm-none-eabi/10.3/linux/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 \
  18.     && wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/hc-gen/0.65/linux/hc-gen-0.65-linux.tar \
  19.     && wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz \
  20.     && wget -P /home/tools https://mirrors.huaweicloud.com/nodejs/v14.19.1/node-v14.19.1-linux-x64.tar.xz \
  21.     && wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.10.1/linux/ninja-linux-x86-1.10.1.tar.gz  \
  22.     && wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/gn/2021/linux/gn-linux-x86-2021.tar.gz  \
  23.     && wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/clang/12.0.1-36cd05/linux/clang_linux-x86_64-36cd05-20221030.tar.bz2  \
  24.     && wget -P /home/tools https://hm-verify.obs.cn-north-4.myhuaweicloud.com/qemu-5.2.0.tar.xz \
  25.     && locale-gen "en_US.UTF-8"  \
  26.     && rm -rf /bin/sh /usr/bin/python /usr/bin/python3  \
  27.     && mkdir -p /home/tools/gn  \
  28.     && mkdir -p /home/tools/ninja  \
  29.     && ln -s /bin/bash /bin/sh  \
  30.     && ln -s /usr/bin/python3.8 /usr/bin/python3  \
  31.     && ln -s /usr/bin/python3.8 /usr/bin/python \
  32.     && pip3 install --trusted-host https://repo.huaweicloud.com \
  33.     -i https://repo.huaweicloud.com/repository/pypi/simple \
  34.     pycryptodome ecdsa redis kconfiglib setuptools requests ohos-build \
  35.     pymongo  pyyaml prompt_toolkit==1.0.14 json2html yagmail python-jenkins  \
  36.     && tar -xvf /home/tools/hc-gen-0.65-linux.tar -C /home/tools \
  37.     && tar -xvf /home/tools/gcc_riscv32-linux-7.3.0.tar.gz -C /home/tools \
  38.     && tar -xvf /home/tools/clang_linux-x86_64-36cd05-20221030.tar.bz2 -C /home/tools  \
  39.     && tar -xvf /home/tools/ninja-linux-x86-1.10.1.tar.gz -C /home/tools/ninja  \
  40.     && tar -xvf /home/tools/gn-linux-x86-2021.tar.gz -C /home/tools/gn  \
  41.     && tar -xJf /home/tools/node-v14.19.1-linux-x64.tar.xz -C /home/tools  \
  42.     && tar -jxvf /home/tools/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 -C /home/tools \
  43.     && tar -xJf /home/tools/qemu-5.2.0.tar.xz -C /home/tools  \
  44.     && cp /home/tools/node-v14.19.1-linux-x64/bin/node /usr/local/bin  \
  45. && ln -s /home/tools/node-v14.19.1-linux-x64/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm  \
  46.     && ln -s /home/tools/node-v14.19.1-linux-x64/lib/node_modules/npm/bin/npx-cli.js /usr/local/bin/npx  \
  47.     && sed -i '$aexport PATH=/home/tools/hc-gen:$PATH' /root/.bashrc  \
  48.     && sed -i '$aexport PATH=/home/tools/gcc_riscv32/bin:$PATH' /root/.bashrc \
  49.     && sed -i '$aexport PATH=/home/tools/gcc-arm-none-eabi-10.3-2021.10/bin:$PATH' /root/.bashrc \
  50.     && sed -i '$aexport PATH=/home/tools/clang_linux-x86_64-36cd05-20221030/bin:$PATH' /root/.bashrc \
  51.     && sed -i '$aexport PATH=/home/tools/ninja:$PATH' /root/.bashrc  \
  52.     && sed -i '$aexport PATH=/home/tools/gn:$PATH' /root/.bashrc  \
  53.     && sed -i '$aexport PATH=/home/tools/node-v14.19.1-linux-x64/bin:$PATH' /root/.bashrc  \
  54.     && sed -i '$aexport PATH=/root/.local/bin:$PATH' /root/.bashrc \
  55.     && export PATH=/home/tools/hc-gen:$PATH  \
  56.     && export PATH=/home/tools/gcc_riscv32/bin:$PATH \
  57.     && export PATH=/home/tools/gcc-arm-none-eabi-10.3-2021.10/bin:$PATH \
  58.     && export PATH=/home/tools/clang_linux-x86_64-36cd05-20221030/bin:$PATH  \
  59.     && export PATH=/home/tools/ninja:$PATH  \
  60.     && export PATH=/home/tools/gn:$PATH  \
  61.     && export PATH=/home/tools/node-v14.19.1-linux-x64/bin:$PATH  \
  62.     && export PATH=/root/.local/bin:$PATH  \
  63.     && cd /home/tools/qemu-5.2.0  \
  64.     && mkdir build  && cd build  \
  65.     && ../configure --target-list=arm-softmmu  \
  66.     && make -j  \
  67.     && make install \
  68.     && cd /root     \
  69.     && rm -rf /home/tools/*.xz  \
  70.     && rm -rf /home/tools/*.gz  \
  71.     && rm -rf /home/tools/*.tar  \
  72.     && rm -rf /home/tools/*.bz2 \
  73.     && rm -rf /home/tools/qemu-5.2.0 \
  74.     && npm install -g @ohos/hpm-cli --registry https://mirrors.huaweicloud.com/repository/npm/ \
  75.     && pip3 install ohos-build

  76. ENV LANG=en_US.UTF-8 LANGUAGE=en_US.UTF-8 LC_ALL=en_US.UTF-8 TZ=Asia/Shanghai


  77. CMD ["/bin/bash"]
复制代码

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部