arm 64 环境利用 docker 编译 datax 工具

简介: arm 64 环境利用 docker 编译 datax 工具
  • 首先你要有个 docker ,这里就不展示 docker 的部署了,可以自行百度

下载 datax 源代码

https://github.com/alibaba/DataX/archive/refs/tags/datax_v202210.tar.gz

准备 dockerfile 文件

  • 因为公司需要用 python3,而 maven 的镜像里面只有 python 2,而且基础镜像是 debian,装python 太麻烦了,就直接拉了一个 python 镜像,通过多阶段构建,复制了一个 java 到 python 镜像,用来验证 datax 在 python3 环境是否正常
FROM maven:3.6.2 as build
ADD DataX-datax_v202210.tar.gz /tmp/
WORKDIR /tmp/DataX-datax_v202210
RUN mvn -U clean package assembly:assembly -Dmaven.test.skip=true
FROM python:3.6.15
ENV JAVA_HOME=/usr/local/openjdk-11
ENV PATH=$PATH:$JAVA_HOME/bin
COPY --from=build /usr/local/openjdk-11 /usr/local/openjdk-11
COPY --from=build /tmp/DataX-datax_v202210/target/datax/datax /datax
RUN python3 /datax/bin/datax.py /datax/job/job.json

构建镜像

docker build -t datax:python3 .
  • 构建完成后会有类似下面的输出,说明 datax 编译没有问题,并且可以在 python3 的环境下使用
2023-03-31 10:03:36.534 [job-0] INFO  JobContainer -
         [total cpu info] =>
                averageCpu                     | maxDeltaCpu                    | minDeltaCpu
                -1.00%                         | -1.00%                         | -1.00%
         [total gc info] =>
                 NAME                 | totalGCCount       | maxDeltaGCCount    | minDeltaGCCount    | totalGCTime        | maxDeltaGCTime     | minDeltaGCTime
                 G1 Young Generation  | 0                  | 0                  | 0                  | 0.000s             | 0.000s             | 0.000s       
                 G1 Old Generation    | 0                  | 0                  | 0                  | 0.000s             | 0.000s             | 0.000s       
2023-03-31 10:03:36.534 [job-0] INFO  JobContainer - PerfTrace not enable!
2023-03-31 10:03:36.534 [job-0] INFO  StandAloneJobContainerCommunicator - Total 100000 records, 2600000 bytes | Speed 253.91KB/s, 10000 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 0.027s |  All Task WaitReaderTime 0.049s | Percentage 100.00%
2023-03-31 10:03:36.536 [job-0] INFO  JobContainer -
任务启动时刻                    : 2023-03-31 18:03:26
任务结束时刻                    : 2023-03-31 18:03:36
任务总计耗时                    :                 10s
任务平均流量                    :          253.91KB/s
记录写入速度                    :          10000rec/s
读出记录总数                    :              100000
读写失败总数                    :                   0
Removing intermediate container 4aee10b5af79
 ---> fbbf32aa8242
Successfully built fbbf32aa8242
Successfully tagged datax:python3

获取 datax 的 tar 包

datax 构建完成后,会生成一个 tar 包,通过 inspect 去查看路径,然后直接拿出来用

docker images | head -n 3

返回的结果类似如下,<none> 是多阶段构建的时候留下来的缓存镜像

REPOSITORY                                                        TAG                                      IMAGE ID            CREATED             SIZE
datax                                                             python3                                  fbbf32aa8242        58 minutes ago      2.8GB
<none>                                                            <none>                                   2faebd0752ab        58 minutes ago      5.9GB

使用 inspect 命令查看镜像的路径

docker inspect 2faebd0752ab | grep "UpperDir"

返回的结果类似如下

                "UpperDir": "/data/docker/graph/overlay2/8c92f5323790d3dcf3022831c93dc2b1846bcb7ba097da04e23ab788e67211a9/diff",

结合上面获取到的路径,和下面的路径拼接,就可以获取到 tar 包了

tmp/DataX-datax_v202210/target/datax.tar.gz

完事之后,镜像就可以删除了,留着也没啥用(docker 就是拿来编译的工具的,休想玷污我的环境)

目录
相关文章
|
26天前
|
关系型数据库 MySQL Docker
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
65 1
|
2月前
|
网络安全 虚拟化 Docker
SSH后判断当前服务器是云主机、物理机、虚拟机、docker环境
结合上述方法,您可以对当前环境进行较为准确的判断。重要的是理解每种环境的特征,并通过系统的响应进行综合分析。如果在Docker容器内,通常会有明显的环境标志和受限的资源视图;而在云主机或虚拟机上,虽然它们也可能是虚拟化的,但通常提供更接近物理机的体验,且可通过硬件标识来识别虚拟化平台。物理机则直接反映硬件真实信息,较少有虚拟化痕迹。通过这些线索,您应该能够定位到您所处的环境类型。
37 2
|
2月前
|
存储 监控 Shell
docker的底层原理二:容器运行时环境
本文深入探讨了Docker容器运行时环境的关键技术,包括命名空间、控制组、联合文件系统、容器运行时以及分离的进程树,这些技术共同确保了容器的隔离性、资源控制和可移植性。
40 5
|
2月前
|
Ubuntu Shell API
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
|
2月前
|
jenkins Java 持续交付
Docker搭建jenkins环境
这篇文章详细介绍了如何利用Docker搭建Jenkins环境,包括拉取Jenkins镜像、配置端口映射及初始化设置的步骤。
170 0
Docker搭建jenkins环境
|
2月前
|
存储 Docker 容器
ARM架构鲲鹏主机BClinux离线安装docker步骤
下载并安装适用于ARM架构的Docker CE二进制文件,解压后移动至/usr/bin目录。创建docker组,配置systemd服务脚本(docker.service、docker.socket、containerd.service),重载systemd配置,启动并启用docker服务。编辑daemon.json配置存储驱动、镜像加速地址等,最后拉取所需镜像。
53 0
|
2月前
|
NoSQL MongoDB Docker
求助,有没有大神可以找到arm64架构下mongodb的3.6.8版本的docker镜像?
在Docker Hub受限的情况下,寻求适用于ARM架构的docker镜像资源或拉取链接,以便在x86架构上获取;内网中的机器为ARM架构,因此优先请求适合ARM的Docker镜像或Dockerfile,非常感激您的帮助。
|
4月前
|
数据采集 DataWorks 监控
DataWorks产品使用合集之数据集成并发数不支持批量修改,该怎么办
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
2月前
|
数据采集 DataWorks 数据管理
DataWorks不是Excel,它是一个数据集成和数据管理平台
【10月更文挑战第10天】随着大数据技术的发展,企业对数据处理的需求日益增长。阿里云推出的DataWorks是一款强大的数据集成和管理平台,提供从数据采集、清洗、加工到应用的一站式解决方案。本文通过电商平台案例,详细介绍了DataWorks的核心功能和优势,展示了如何高效处理大规模数据,帮助企业挖掘数据价值。
111 1
|
2月前
|
数据采集 SQL DataWorks
DataWorks不是Excel,它是一个数据集成和数据管理平台
【10月更文挑战第5天】本文通过一家电商平台的案例,详细介绍了阿里云DataWorks在数据处理全流程中的应用。从多源数据采集、清洗加工到分析可视化,DataWorks提供了强大的一站式解决方案,显著提升了数据分析效率和质量。通过具体SQL示例,展示了如何构建高效的数据处理流程,突显了DataWorks相较于传统工具如Excel的优势,为企业决策提供了有力支持。
103 3