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 就是拿来编译的工具的,休想玷污我的环境)