Kettle-Docker部署+Sqlserver数据同步Mysql+Start定时任务
要在Docker中部署Kettle(又称Pentaho Data Integration, PDI)并与Sqlserver数据同步到MySQL,你需要执行以下步骤:
- 创建Dockerfile来构建包含Kettle的Docker镜像。
- 设置Kettle作业(job)来执行数据同步。
- 使用Docker命令构建镜像并运行容器。
- 设置定时任务(Cron Job)来定期执行该Docker容器。
以下是一个简化的Dockerfile示例,它安装了Kettle和数据库驱动:
FROM centos:7
# 安装Java
RUN yum install -y java-1.8.0-openjdk
# 安装Kettle
RUN wget https://sourceforge.net/projects/pentaho/files/Data Integration/7.1/pdi-ce-7.1.0.0-12.zip/download -O kettle.zip
RUN unzip kettle.zip -d /usr/lib/kettle
# 安装MySQL JDBC驱动
RUN wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.23.tar.gz
RUN tar zxvf mysql-connector-java-8.0.23.tar.gz
RUN cp mysql-connector-java-8.0.23/mysql-connector-java-8.0.23.jar /usr/lib/kettle/lib/
# 安装Sqlserver JDBC驱动
RUN yum install -y mssql-jdbc
# 创建Kettle作业脚本
COPY sync_sqlserver_to_mysql.kjb /usr/lib/kettle/jobs/
# 设置Cron定时任务
RUN crontab -e <<EOF
0 * * * * /usr/lib/kettle/kitchen.sh /usr/lib/kettle/jobs/sync_sqlserver_to_mysql.kjb
EOF
# 设置工作目录
WORKDIR /usr/lib/kettle
# 设置环境变量
ENV JAVA_HOME /usr/lib/jvm/jre-openjdk
# 对外暴露端口(如果需要通过Web方式访问Kettle)
EXPOSE 8080
# 启动Kettle服务器
CMD ["/usr/lib/kettle/carte.sh", "-port=8080", "-master=localhost"]
在这个Dockerfile中,我们安装了Java环境、Kettle,并且设置了MySQL和Sqlserver的JDBC驱动。我们复制了同步作业脚本到Kettle的作业目录,并通过crontab设置了每小时执行同步作业的定时任务。
同步作业脚本sync_sqlserver_to_mysql.kjb
需要你自己创建,并在Docker构建过程中复制到指定目录。
构建和运行Docker镜像的命令如下:
docker build -t kettle-sqlserver-mysql .
docker run -d kettle-sqlserver-mysql
这样,你就设置了一个定时执行的数据同步任务,该任务在Docker容器内部运行,并且使用了Kettle作业来处理数据。
评论已关闭