建设自己网站软件下载,百度搜索引擎优化的方法,wordpress数字证书登录,百度新站关键词排名解决方案#xff1a;使用 Dockerfile 和启动脚本注册 XXL-Job 执行器的正确 IP 地址
在使用容器化方式注册 XXL-Job 执行器时#xff0c;由于容器的 IP 地址是动态分配的#xff0c;可能会导致调度中心无法访问执行器。为了解决这个问题#xff0c;可以使用 Dockerfile 和…解决方案使用 Dockerfile 和启动脚本注册 XXL-Job 执行器的正确 IP 地址
在使用容器化方式注册 XXL-Job 执行器时由于容器的 IP 地址是动态分配的可能会导致调度中心无法访问执行器。为了解决这个问题可以使用 Dockerfile 和启动脚本的方式来动态获取容器的 IP 地址并正确注册到 XXL-Job。
在华为云容器化服务中XXL-Job 执行器自动注册的 IP 地址通常是 http://169.254.1.1:xxxx/这个地址任务调度器无法访问。
分布式部署的方式手动去填写ip地址肯定不行因为这个ip地址每次都是变动的。
所以需要的方案也很简单就是在容器启动的时候获取容器的ip地址然后在启动java服务时把ip作为一个向xxl-job注册时的参数就行具体如下
方式一
这样写更方便就不用多出一个脚本了
CMD [sh, -c, EXECUTOR_IP$(hostname -i) java -jar xxl-job-executor-1.0.0.jar --spring.profiles.activeprod --xxl.job.executor.ip$EXECUTOR_IP]方式二
这种方式麻烦点但如果原先本来就有其他启动脚本的这样改起来也更清晰。
1. 编写启动脚本
首先在项目根目录下创建一个 start.sh 启动脚本用于动态获取容器的 IP 地址并启动 XXL-Job 执行器
#!/bin/bash
EXECUTOR_IP$(hostname -i)
java -jar xxl-job-executor-1.0.0.jar --spring.profiles.activeprod --xxl.job.executor.ip$EXECUTOR_IP此脚本通过 hostname -i 动态获取容器的 IP 地址并将其传递给 XXL-Job 执行器启动命令中的 xxl.job.executor.ip 参数。
2. 修改 Dockerfile
在 Dockerfile 中将启动脚本复制到容器中并设置为入口命令
FROM eclipse-temurin:17.0.11_9-jreARG path# 创建工作目录
RUN mkdir -p /home/work/
WORKDIR /home/work# 下载并解压 XXL-Job 执行器
RUN wget $path -O /home/work/xxl-job-executor.tgz
RUN tar -zxvf /home/work/xxl-job-executor.tgz -C /home/work/# 复制启动脚本到容器
COPY start.sh /home/work/start.sh
RUN chmod x /home/work/start.sh# 暴露执行器的端口
EXPOSE 8082# 设置启动脚本为入口点
ENTRYPOINT [/home/work/start.sh]3. 说明
启动脚本确保容器启动时动态获取正确的 IP 地址并将其传递给 XXL-Job 执行器。Dockerfile配置了启动脚本的路径并使用 ENTRYPOINT 命令确保脚本在容器启动时执行。
直接在Dockerfile中执行命令
4. 总结
通过这种方式容器在启动时会动态获取自身的 IP 地址并将其正确注册到 XXL-Job 中解决了动态 IP 地址在调度回调时无法访问的问题。这种方法适用于在 Kubernetes 或 Docker Swarm 中部署多个动态 IP 的容器环境。