SrpingBoot 集成 xxl-job 部署在 Docker 上碰到的坑

简介: 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=xxljobexecutorip","Dxxl.job.executor.address=xxljobexecutorip","−Dxxl.job.executor.address={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

 

目录
相关文章
|
3月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
671 108
kde
|
15天前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
kde
378 4
|
3月前
|
运维 Devops 持续交付
揭秘 Docker 自动部署神器 Websoft9:热门开源软件一键部署
在企业IT建设中,软件部署常面临效率低、易出错等问题。通过Docker与自动化工具,可实现高效、标准化和可追溯的部署流程,提升企业应用交付效率,降低运维门槛,助力中小企业实现自动化部署。
240 5
揭秘 Docker 自动部署神器 Websoft9:热门开源软件一键部署
|
2月前
|
JavaScript 算法 前端开发
【Docker项目实战】使用Docker部署paopao-ce微社区
【Docker项目实战】使用Docker部署paopao-ce微社区
312 84
【Docker项目实战】使用Docker部署paopao-ce微社区
|
3月前
|
运维 Cloud Native 开发者
Docker:现代化应用开发与部署的神器
Docker:现代化应用开发与部署的神器
204 101
|
3月前
|
设计模式 Linux 开发工具
Docker部署会吗?
本段内容主要介绍了Docker常用命令、Linux基础指令及日志查看方法,还涉及SpringMVC的执行流程、设计模式与注解,适合用于面试中技术能力的展示。
114 0
|
14天前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
57 5
|
2月前
|
存储 Docker Python
docker 部署 sftp
本文介绍SFTP服务的部署与配置,包括users.conf用户配置规则、Docker容器运行命令及上传目录权限说明,重点解析atmoz/sftp镜像的chroot机制与子目录映射,确保用户登录后正确访问/upload目录,并提供Python脚本实现文件上传示例。
128 12
docker 部署 sftp
kde
|
1月前
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
kde
497 7