SrpingBoot 集成 xxl-job 部署在 Docker 上碰到的坑
如果不指定 xxl.job.executor.ip,默认会用 Docker 的IP,注册到 xxl-job 里面,这时候无法回调
如果xxl.job.executor.ip、xxl.job.executor.address 都赋值,就会出现没端口的情况,具体如下
原因 xxxl.job.ip 为空,默认给了 docker 的ip ,xxl-job-admin 无法回调到该地址,
Docker run 的时候,需要给定参数
"-Dxxl.job.executor.ip={xxl_job_executor_ip}"
如果ip、address 都配了,就会出现下面问题,端口没了。
查看 xxl-job的源码找到原因
private void initEmbedServer(String address, String ip, int port, String appname, String accessToken) throws Exception { // fill ip port port = port>0?port: NetUtil.findAvailablePort(9999); ip = (ip!=null&&ip.trim().length()>0)?ip: IpUtil.getIp(); // generate address if (address==null || address.trim().length()==0) { String ip_port_address = IpUtil.getIpPort(ip, port); // registry-address:default use address to registry , otherwise use ip:port if address is null address = "http://{ip_port}/".replace("{ip_port}", ip_port_address); } // start embedServer = new EmbedServer(); embedServer.start(address, port, appname, accessToken); }
解决如下:
将 -Dxxl.job.executor.ip=$LOCALHOST_IP 暴露出来(只给ip参数赋值),docker run 的时候将具体ip做为参数传进去
DockerFile
# Docker image for SpringBoot file run # VERSION 0.0.1 # Author: Jimmy # 基础镜像使用java FROM java:8 # 作者 MAINTAINER Jimmy <Jimmy.Chen@vipsoft.com.cn> # VOLUME 指定了临时文件目录为/tmp。 # 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp VOLUME /tmp # 将jar包添加到容器中并更名为app.jar ADD vipsoft-web-1.0.0.jar app.jar RUN bash -c 'touch /app.jar' #把项目中的agent文件夹拷贝进行容器中的/usr/local/agent文件夹中 ADD agent /skywalking/agent/ #定义环境变量,供run的时候传参数给 jar ENV PARAMS="" #修改Docker时区-否则里面的时间会慢8小时 #通过文件链接的方式修改 时区 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone ENV JAVA_OPTS="" ENV SPRING_PROFILES_ACTIVE="" ENV SKYWALKING_OAP_SERVER="" ENV LOCALHOST_IP="" ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -javaagent:/skywalking/agent/skywalking-agent.jar -Dskywalking.collector.backend_service=$SKYWALKING_OAP_SERVER -Dxxl.job.executor.ip=$LOCALHOST_IP -Dskywalking.agent.service_name=vipsoft-web-$SPRING_PROFILES_ACTIVE -Dspring.profiles.active=$SPRING_PROFILES_ACTIVE -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
docker build -t vipsoft-web:1.0.0 .
docker run --name vipsoft-web-dev-17082 --restart always \ -d -p 17082:7082 -p 1982:1982 -p 1682:1682 \ -e SPRING_PROFILES_ACTIVE="dev" \ -e LOCALHOST_IP="172.16.3.62" \ -e SKYWALKING_OAP_SERVER="172.16.3.61:1800" \ -v /opt/logs/vipsoft_web_dev/:/logs/ \ vipsoft-web:1.0.0
本文来自博客园,作者:VipSoft 转载请注明原文链接:https://www.cnblogs.com/vipsoft/p/14790683.html
分类:
JAVA
标签:
SpringBoot
, Docker
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
2013-05-20 错误324 (net::ERR_EMPTY_RESPONSE):未知的错误