原因 xxxl.job.ip 为空,默认给了 docker 的ip ,xxl-job-admin 无法回调到该地址,
Docker run 的时候,需要给定参数
"-Dxxl.job.executor.ip=${xxl_job_executor_ip}","-Dxxl.job.executor.address=${xxl_job_executor_ip}"
如果ip、address 都配了,就会出现下面问题,端口没了。
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 暴露出来,docker run 的时候更新