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

posted @ 2024-08-10 23:09  月巴左耳东  阅读(46)  评论(0编辑  收藏  举报  来源