原因:
这是由于docker部署xxljob时将xxl-job-admin与自己开发的执行器程序分别部署到两个容器内,而容器内网络端口互不相通导致;
最简单而且实际可行的解决办法是使用宿主机网络,将端口映射到容器外去。如图所示
version: '3'
services:
xxl-job-admin-member-dev:
#image: xuxueli/xxl-job-admin:2.2.0
image: xuxueli/xxl-job-admin:2.3.0
restart: always
container_name: xxl-job-admin-member-dev
environment:
PARAMS: '--server.port=8800 --spring.datasource.url=jdbc:mysql://xxxx.x.x.x:3306/xxl_job_member_dev?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false --spring.datasource.username=xxx --spring.datasource.password=xxx --spring.datasource.hikari.max-lifetime=60000'
ports:
- 8800:8800
- 6666:6666
volumes:
- /mnt/logs/xxl-job-member-dev:/data/applogs
network_mode: host
其中8800是admin管理端netty服务器的端口,6666是客户端执行器的运行端口,其实ports这个字段可以不用写,但是为了让读者看清内部映射的端口是什么,所以才写上去,相当于注释。
如果是docker直接运行,则在docker run 命令中增加 -p 8800:8800 -p 6666:6666端口映射即可
此处端口仅为示例,根据实际情况修改docker run命令即可,如已创建好运行容器,建议删除后带上需映射的端口号再创建一次