1、准备基础镜像,开通所需端口
先查看3306和9527端口是否开放,如果未开放先在防火墙添加

firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --zone=public --add-port=9527/tcp --permanent firewall-cmd --reload systemctl stop docker systemctl restart docker
拉取镜像
docker pull linshellfeng/datax_web:3.0.1
或者

docker pull swr.cn-north-1.myhuaweicloud.com/softwares/datax-web:2.1.2
注意:datax_web:3.0.1镜像已经整合了datax3.0和datax-web,整合后的镜像大小约990M
2、初始化数据库
下载DataX-Web源码
https://github.com/WeiYe-Jing/datax-web 1.IDEA编译打包 下载链接:https://pan.baidu.com/s/13a8nIpz6FL8y4fdE94trjQ 提取码:data 2.官方提供的版本tar版本包 https://pan.baidu.com/s/13yoqhGpD00I82K4lOYtQhg 提取码:cpsk
创建数据库
mysql> create database datax_web;
解压DataX-Web压缩包
# 找到 bin/db/datax_web.sql 文件,进行初始化
3、在宿主机创建挂载文件
在宿主机创建/usr/datax/datax-web/datax-admin/conf目录,并将bootstrap.properties拷贝到/usr/datax/datax-web/datax-admin/conf目录下,该文件用来配置datax-web连接数据库的信息,IP地址和xxxxxx需要按实际情况填写。
bootstrap.properties内容参考如下:
#Database DB_HOST=192.168.1.xx DB_PORT=3306 DB_USERNAME=datax_web DB_PASSWORD=xxxxxx DB_DATABASE=datax_web_db
4、启动容器
docker run -d --name datax_web -p 9527:9527 -v /usr/datax/datax-web/datax-admin/conf/bootstrap.properties:/home/datax/datax-web-2.1.2/modules/datax-admin/conf/bootstrap.properties linshellfeng/datax_web:3.0.1
或者
docker run -d --name datax_web -p 9527:9527 -v /usr/datax/datax-web/datax-admin/conf/bootstrap.properties:/home/datax/datax-web-2.1.2/modules/datax-admin/conf/bootstrap.properties swr.cn-north-1.myhuaweicloud.com/softwares/datax-web:2.1.2
5、进入容器内部(非必要步骤,用来测试datax_web容器是否正常启动)
docker exec -it datax_web /bin/bash
6、测试是否datax-web服务是否正常启动
在容器内:curl http://127.0.0.1:9527/index.html
使用浏览器访问宿主机服务:http://宿主机ip:9527/index.html
使用admin/123456登录后及时修改密码
7、异常处理
当运行时:
[AnalysisStatistics.analysisStatisticsLog-53] com.alibaba.datax.common.exception.DataXException: Code:[Framework-03], Description:[DataX引擎配置错误,该问题通常是由于DataX安装错误引起,请联系您的运维解决 .]. - 在有总bps限速条件下,单个channel的bps值不能为空,也不能为非正数。
在com\alibaba\datax\core\util\container\CoreConstant.java源码中
public static final String DATAX_JOB_SETTING_SPEED_BYTE = "job.setting.speed.byte"; public static final String DATAX_JOB_SETTING_SPEED_RECORD = "job.setting.speed.record"; public static final String DATAX_CORE_TRANSPORT_CHANNEL_SPEED_BYTE = "core.transport.channel.speed.byte"; public static final String DATAX_CORE_TRANSPORT_CHANNEL_SPEED_RECORD = "core.transport.channel.speed.record";
com\alibaba\datax\core\job\JobContainer.java源码中
boolean isByteLimit = (this.configuration.getInt( CoreConstant.DATAX_JOB_SETTING_SPEED_BYTE, 0) > 0); if (isByteLimit) { long globalLimitedByteSpeed = this.configuration.getInt( CoreConstant.DATAX_JOB_SETTING_SPEED_BYTE, 10 * 1024 * 1024); // 在byte流控情况下,单个Channel流量最大值必须设置,否则报错! Long channelLimitedByteSpeed = this.configuration .getLong(CoreConstant.DATAX_CORE_TRANSPORT_CHANNEL_SPEED_BYTE); if (channelLimitedByteSpeed == null || channelLimitedByteSpeed 0; if (isRecordLimit) { long globalLimitedRecordSpeed = this.configuration.getInt( CoreConstant.DATAX_JOB_SETTING_SPEED_RECORD, 100000); Long channelLimitedRecordSpeed = this.configuration.getLong( CoreConstant.DATAX_CORE_TRANSPORT_CHANNEL_SPEED_RECORD); if (channelLimitedRecordSpeed == null || channelLimitedRecordSpeed