docker、Docker-Compose、Portainer和1Panel安装部署、docker部署mysql、redis、rabbitmq、xxl-job、Prometheus

Docker部署文档

一、基础安装

1. 查看系统的内核版本

uname -r
4.18.0-80.11.2.el8_0.x86_64
  • uname -r
  • x86 64位系统,如果是32位是不能安装 docker 的

2. yum 更新到最新版本

sudo yum update
  • sudo yum update
  • 看到显示 Complete 就代表完成了,整个过程需要 5-10 分钟左右

注意:可能会更新失败,那就操作以下指令

## 建议备份当前的 yum 源配置,以防万一需要恢复
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
## 从阿里云下载 CentOS 7 的 yum 源配置文件并替换现有的配置
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
## 清理旧的缓存并生成新的缓存
sudo yum clean all
sudo yum makecache
## 再次更新
sudo yum update

3. 安装Docker所需的依赖包

sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  • sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  • 看到显示 Complete 就代表完成了,整个过程需要 1-3 分钟左右

4. 设置Docker的yum的源

#推荐使用
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  
  • sudo yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo (注意很卡,推荐使用下面国内源)
  • 鉴于国内网络问题,强烈建议使用国内源。以下是阿里云的软件源。如果是海外如AWS云就不要设置yum源
#推荐使用
sudo yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#把 Docker 官方源换成阿里云国内镜像源
sudo sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

5. 查看仓库所有Docker版本

[root@CodeGuide ~]# yum list docker-ce --showduplicates | sort -r
Installed Packages
docker-ce.x86_64               3:20.10.9-3.el8                 docker-ce-stable 
docker-ce.x86_64               3:20.10.8-3.el8                 docker-ce-stable 
docker-ce.x86_64               3:20.10.7-3.el8                 docker-ce-stable 
docker-ce.x86_64               3:20.10.6-3.el8                 docker-ce-stable 
docker-ce.x86_64               3:20.10.5-3.el8                 docker-ce-stable 
docker-ce.x86_64               3:20.10.4-3.el8                 docker-ce-stable 
docker-ce.x86_64               3:20.10.3-3.el8                 docker-ce-stable 
docker-ce.x86_64               3:20.10.2-3.el8                 docker-ce-stable 
docker-ce.x86_64               3:20.10.1-3.el8                 docker-ce-stable 
docker-ce.x86_64               3:20.10.11-3.el8                docker-ce-stable 
docker-ce.x86_64               3:20.10.11-3.el8                @docker-ce-stable
docker-ce.x86_64               3:20.10.10-3.el8                docker-ce-stable 
docker-ce.x86_64               3:20.10.0-3.el8                 docker-ce-stable 
docker-ce.x86_64               3:19.03.15-3.el8                docker-ce-stable 
docker-ce.x86_64               3:19.03.14-3.el8                docker-ce-stable 
docker-ce.x86_64               3:19.03.13-3.el8                docker-ce-stable 
  • yum list docker-ce –showduplicates | sort -r
  • 这里可以看到你能安装的最新版本,最上面最新

6. 安装Docker

# 安装最新版本
sudo yum install docker-ce
#安装指定版本
sudo yum install -y docker-ce-25.0.5 docker-ce-cli-25.0.5 containerd.io
  • 安装指定版本,例如:yum install -y docker-ce-25.0.5 docker-ce-cli-25.0.5 containerd.io

7. 安装Docker-Compose

7.1 正常安装

官网地址(很卡,推荐下面镜像地址)

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

镜像地址

# 指定路径【推荐】
sudo curl -L https://gitee.com/fustack/docker-compose/releases/download/v2.24.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
# 设置权限
sudo chmod +x /usr/local/bin/docker-compose
7.2 离线安装
# 下载;docker-compose-`uname -s`-`uname -m` 查看版本;https://github.com/docker/compose/releases/tag/v2.18.1
# 重命名
mv docker-compose-linux-x86_64 docker-compose
# 加入执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 查看docker-compose版本
docker-compose -v
  • 安装后就可以使用 compose 命令了;docker-compose -f environment-docker-compose.yml up -d

8. 启动Docker并添加开机自启动

启动Docker

# 启动Docker
sudo systemctl start docker
  • 设置开机启动 Docker
# 设置开机启动 Docker
systemctl enable docker
  • 重启 Docker 命令
# 重启 Docker 命令
sudo systemctl restart docker

9. 查看 Docker 版本

docker --version

10. 卸载 Docker

[root@CodeGuide ~]# sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine   

11. Docker 常用命令

docker --help				#Docker帮助
docker --version			#查看Docker版本
docker search <image>		#搜索镜像文件,如:docker search mysql
docker pull <image>			#拉取镜像文件, 如:docker pull mysql
docker images				#查看已经拉取下来的所以镜像文件
docker rmi <image>			#删除指定镜像文件
docker run --name <name> -p 80:8080 -d <image>		#发布指定镜像文件
docker ps					#查看正在运行的所有镜像
docker ps -a				#查看所有发布的镜像
docker rm <image>			#删除执行已发布的镜像
#启动容器:
docker run -d \
  --name 容器名 \
  -p 主机端口:容器端口 \
  -e 环境变量=\
  -v 主机目录:容器目录 \
  镜像名:tag
#停止服务,删除服务
docker stop 容器名
docker rm 容器名
#进入容器
docker exec -it 容器名(例:big-market-app ) /bin/bash

12. 设置国内源

使用以下命令来设置 Docker 国内源:- 或者你可以通过 vim /etc/docker/daemon.json 进入修改添加 registry-mirrors 内容后重启 Docker

# 最终常用镜像源
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "https://docker.1panel.live",
        "https://dc.j8.work",
        "https://docker.m.daocloud.io",
        "https://dockerproxy.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn"
    ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

这个命令会创建一个 /etc/docker/daemon.json 文件,并将国内源的配置写入其中。然后你只需要重启 Docker 服务即可使配置生效,可以通过运行 sudo systemctl restart docker 命令来重启 Docker 服务。

解决目前Docker Hub国内无法访问方法

自从2023年5月中旬,著名Docker 容器平台:hub.docker.com “不知” 何种原因国内均无法正常访问了。

这样对国内服务器拉取Docker仓库影响比较大。不过得亏国内有Docker Hub镜像平台。有付费的,有免费的!

  • 参考链接:https://cloud.tencent.com/developer/article/2301228

二、运维面板安装(Portainer)(Portainer和1Panel 二选一安装即可)

1、Portainer

拉取最新的 Portainer
  • 默认镜像:docker pull portainer/portainer(可能拉取很快)
  • 代理镜像:docker pull registry.cn-hangzhou.aliyuncs.com/xfg-studio/portainer:latest(推荐和代理安装启动一起)
  • 拉取 portainer

2. 安装和启动

注意:如果是阿里云服务器,还需要先执行 docker volume crete portainer_data

# 默认镜像安装(可能很卡)
docker run -d --restart=always --name portainer -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
# 代理安装(推荐):  
docker run -d --restart=always --name portainer -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock registry.cn-hangzhou.aliyuncs.com/xfg-studio/portainer:latest

代理安装(推荐):docker run -d --restart=always --name portainer -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock registry.cn-hangzhou.aliyuncs.com/xfg-studio/portainer:latest

3. 访问 Portainer

  • 地址:http://xxxx:9000/
  • 操作:登录后设置你的用户名和密码,并设置本地Docker即可

4、停止Portainer

docker stop portainer

5、启动Portainer(已有镜像情况)

docker start portainer

三、运维面板安装(1Panel )(Portainer和1Panel 二选一安装即可)

1. 安装脚本

curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh
  • Centos 一键安装脚本,复制到云服务器直接执行即可。
  • 其他的云服务器系统安装脚本:https://1panel.cn/docs/installation/online_installation/

2. 安装效果

在这里插入图片描述

  • 安装过程中你可以顺序点回车即可,注意是否配置镜像加速,因为我配置过,所以没有配置。你可以选 Y 统一配置镜像加速。
  • 安装完成后,会得到一个外网地址,端口是默认的37126,同时给会你用户和密码。注意,需要在云服务器开放端口(安全组/防火墙)37126 另外账号密码可以在登录后修改。
  • 你的 Linux 安装 Docker 会直接被 1Panel 接管。在 1Panel 会看到你安装过的软件
  • 同时可以看到每个软件占用的 CPU、内存,这个还是非常好用的

3、卸载1Panel

  1. 执行官方卸载(会一并停用并移除 systemd 服务)
    sudo 1pctl uninstall
    
  2. 确认无残留后,可选地删掉数据与配置
    sudo rm -rf /opt/1panel /usr/local/bin/1panel /etc/systemd/system/1panel.service
    # 通知 systemd “配置已变,请重新读盘”
    sudo systemctl daemon-reload
    

四、服务部署

1、配置JDK、maven、git 环境

  • 安装git
sudo yum install git
  • 安装JDK、maven
1.1 上传文件到dev-ops目录下(文件可以从这里拉取https://gitcode.com/weixin_47555380/dev-ops.git)
注意:文件中 因为jdk 比较大未上传,需要单独下载后替换dev-ops里面
1.2 执行脚本
chmod +x java.sh
chmod +x maven.sh
#注意替换dev-ops里面java下面 jdk-8u202-linux-x64.tar.gz  文件
./java.sh
./maven.sh
#刷新配置
source /etc/profile
# 检查版本
java -version
mvn -version

在这里插入图片描述

2、上传相关 docker-compose-environment.yml 、docker-compose-app.yml、mysql、rabbitmq、redis 文件

文件可以从这里拉取  https://gitcode.com/weixin_47555380/dev-ops.git
mysql文件里面有sql,可以启动的时候执行
redis文件里面有redis.conf
rabbitmq文件里面有enabled_plugins
docker-compose-environment.yml
# 命令执行 docker-compose -f docker-compose-environment.yml up -d
version: '3.9'
services:
  mysql:
    image: mysql:8.0.32
    container_name: mysql
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: 123456
    networks:
      - my-network
    depends_on:
      - mysql-job-dbdata
    ports:
      - "13306:3306"
    volumes:
      - ./mysql/sql:/docker-entrypoint-initdb.d
    healthcheck:
      test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
      interval: 5s
      timeout: 10s
      retries: 10
      start_period: 15s
    volumes_from:
      - mysql-job-dbdata
  # 自动加载数据
  mysql-job-dbdata:
    image: alpine:3.18.2
    container_name: mysql-job-dbdata
    volumes:
      - /var/lib/mysql
  # phpmyadmin https://hub.docker.com/_/phpmyadmin
  phpmyadmin:
    image: phpmyadmin:5.2.1
    container_name: phpmyadmin
    hostname: phpmyadmin
    ports:
      - 8899:80
    environment:
      - PMA_HOST=mysql
      - PMA_PORT=3306
      - MYSQL_ROOT_PASSWORD=123456
    depends_on:
      mysql:
        condition: service_healthy
    networks:
      - my-network
  # Redis
  redis:
    image: redis:6.2
    container_name: redis
    restart: always
    hostname: redis
    privileged: true
    ports:
      - 16379:6379
    volumes:
      - ./redis/redis.conf:/usr/local/etc/redis/redis.conf
    command: redis-server /usr/local/etc/redis/redis.conf
    networks:
      - my-network
    healthcheck:
      test: [ "CMD", "redis-cli", "ping" ]
      interval: 10s
      timeout: 5s
      retries: 3
  # RedisAdmin https://github.com/joeferner/redis-commander
  # 账密 admin/admin
  redis-admin:
    image: spryker/redis-commander:0.8.0
    container_name: redis-admin
    hostname: redis-commander
    restart: always
    ports:
      - 8081:8081
    environment:
      - REDIS_HOSTS=local:redis:6379
      - HTTP_USER=admin
      - HTTP_PASSWORD=admin
      - LANG=C.UTF-8
      - LANGUAGE=C.UTF-8
      - LC_ALL=C.UTF-8
    networks:
      - my-network
    depends_on:
      redis:
        condition: service_healthy
  # rabbitmq
  # 账密 admin/admin
  # rabbitmq-plugins enable rabbitmq_management
  rabbitmq:
    image: rabbitmq:3.12.9
    container_name: rabbitmq
    restart: always
    ports:
      - "5672:5672"
      - "15672:15672"
    environment:
      RABBITMQ_DEFAULT_USER: admin
      RABBITMQ_DEFAULT_PASS: admin
    command: rabbitmq-server
    volumes:
      - ./rabbitmq/enabled_plugins:/etc/rabbitmq/enabled_plugins
    networks:
      - my-network
  # http://127.0.0.1:9090/xxl-job-admin admin/123456 - 安装后稍等会访问即可 
  # 官网镜像为 xuxueli/xxl-job-admin:2.4.1 (不用xxl-job可以去掉)
  xxl-job-admin:
    image: xuxueli/xxl-job-admin:2.4.1 #M1 Mac 更换镜像 kuschzzp/xxl-job-aarch64:2.4.0
    container_name: xxl-job-admin
    restart: always
    depends_on:
      - mysql
    ports:
      - "9090:9090"
    links:
      - mysql
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/xxl_job?serverTimezone=UTC&characterEncoding=utf8&autoReconnect=true&serverTimezone=Asia/Shanghai
      - SPRING_DATASOURCE_USERNAME=root
      - SPRING_DATASOURCE_PASSWORD=123456
      - SERVER_PORT=9090
    networks:
      - my-network
  # 数据采集(不用监控可以去掉)
  prometheus:
    image: bitnami/prometheus:2.47.2
    container_name: prometheus
    restart: always
    ports:
      - 9099:9090
    volumes:
      - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
    networks:
      - my-network
  # 监控界面(不用监控可以去掉)
  grafana:
    image: grafana/grafana:10.2.0
    container_name: grafana
    restart: always
    ports:
      - 4000:4000
    depends_on:
      - prometheus
    volumes:
      - ./grafana:/etc/grafana
    networks:
      - my-network
networks:
  my-network:
    driver: bridge
docker-compose-app.yml
version: '3.8'
# 命令执行 docker-compose -f docker-compose-app.yml up -d
services:
  big-market-app:
    image: fuzhengwei/big-market-app:3.0
    container_name: big-market-app
    restart: always
    ports:
      - "8091:8091"
    environment:
      - TZ=PRC
      - SERVER_PORT=8091
      - APP_CONFIG_API_VERSION=v1
      - APP_CONFIG_CROSS_ORIGIN=*
    volumes:
      - ./log:/data/log
    networks:
      - my-network
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"
  big-market-front-app:
    container_name: big-market-front-app
    image: fuzhengwei/big-market-front-app:3.0
    restart: always
    networks:
      - my-network
    ports:
      - 80:3000
    healthcheck:
      test: [ "CMD", "wget", "--spider", "-q", "http://0.0.0.0:3000/" ]
      interval: 1m
      timeout: 10s
      retries: 3
networks:
  my-network:
    driver: bridge

3、拉取服务代码

git clone xxx.git

4、maven打包

#项目目录下执行
mvn clean install

5、build 服务镜像

  • 进入app服务中

    在这里插入图片描述

  • 执行命令

chmod +x build.sh
./build.sh
#构建完成,可以查看镜像
docker images
build.sh (注意build.sh 文件当前目录下需要存在Dockerfile文件)
docker build -t fuzhengwei/big-market-app:3.0 -f ./Dockerfile .
Dockerfile 文件
# 基础镜像
FROM openjdk:8-jre-slim
# 作者
MAINTAINER xiaofuge
# 配置
ENV PARAMS=""
# 时区
ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 添加应用
ADD target/big-market-app.jar /big-market-app.jar
ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /big-market-app.jar $PARAMS"]

6、拉取依赖镜像,如mysql、redis等(可以先执行第7步,如果第7步拉取镜像超时,可以执行第6步,提前拉取好镜像再执行第7步)

# 代理镜像地址
https://github.com/fuzhengwei/docker-image-pusher
# 命令1:
docker pull registry.cn-hangzhou.aliyuncs.com/xfg-studio/mysql:8.0.32
# 命令2:
docker tag registry.cn-hangzhou.aliyuncs.com/xfg-studio/mysql:8.0.32 mysql:8.0.32
分别使用命令1和命令2,拉取和修改镜像名称,之后就可以使用。注意命令2修改的名称要为原镜像名称    
超时部分镜像拉取好后,再执行第7步命令
7、命令执行 docker-compose -f docker-compose-environment.yml up -d (如果这边执行超时,可以先执行第6点,先提前拉取镜像)
docker-compose -f docker-compose-environment.yml up -d

8、命令执行 docker-compose -f docker-compose-app.yml up -d

镜像都准备好后,执行命令:
docker-compose -f docker-compose-app.yml up -d   

五、服务监控系统部署(Prometheus(普罗米修斯))

1、引入pom

        <!-- 监控;actuator-上报、prometheus-采集、grafana-展示 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-registry-prometheus</artifactId>
        </dependency>

2、添加配置类

PrometheusConfiguration.java
package cn.market.config;
import io.micrometer.core.aop.CountedAspect;
import io.micrometer.core.aop.TimedAspect;
import io.micrometer.core.instrument.Clock;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.prometheus.PrometheusConfig;
import io.micrometer.prometheus.PrometheusMeterRegistry;
import io.prometheus.client.CollectorRegistry;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
@EnableAspectJAutoProxy
@Configuration
public class PrometheusConfiguration {
    @Bean
    public CollectorRegistry collectorRegistry() {
        return new CollectorRegistry();
    }
    @Bean
    public PrometheusMeterRegistry prometheusMeterRegistry(PrometheusConfig config, CollectorRegistry collectorRegistry) {
        return new PrometheusMeterRegistry(config, collectorRegistry, Clock.SYSTEM);
    }
    @Bean
    public TimedAspect timedAspect(MeterRegistry registry) {
        return new TimedAspect(registry);
    }
    @Bean
    public CountedAspect countedAspect(MeterRegistry registry) {
        return new CountedAspect(registry);
    }
}

3、application.yml配置文件新增配置

# 监控配置 Prometheus + Grafana
management:
  endpoints:
    web:
      exposure:
        include: "*" # 暴露所有端点,包括自定义端点
  endpoint:
    health:
      show-details: always # 显示详细的健康检查信息
  metrics:
    export:
      prometheus:
        enabled: true # 启用Prometheus
  prometheus:
    enabled: true # 启用Prometheus端点

4、上传 Prometheus + Grafana 文件以及docker-compose-environment.yml 文件

文件可以从这里拉取  https://gitcode.com/weixin_47555380/dev-ops.git   第4阶段-v4.3

5、启动

docker-compose -f docker-compose-environment.yml

6、登录

http://xxx:4000/

7、导入仪表盘

在这里插入图片描述

六、服务接入xxl-job系统

1、pom导入

 			<dependency>
                <groupId>com.xuxueli</groupId>
                <artifactId>xxl-job-core</artifactId>
                <version>2.4.0</version>
            </dependency>

2、yml配置

# xxl-job https://www.xuxueli.com/xxl-job/#%E6%AD%A5%E9%AA%A4%E4%B8%80%EF%BC%9A%E8%B0%83%E5%BA%A6%E4%B8%AD%E5%BF%83%E9%85%8D%E7%BD%AE%EF%BC%9A
xxl:
  job:
    # 验证信息 官网Bug https://github.com/xuxueli/xxl-job/issues/1951
    accessToken: default_token
    # 注册地址(服务器部署地址)
    admin:
      addresses: http://xxxx:9090/xxl-job-admin    
    # 注册执行器
    executor:
      #  执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。
      address:
      appname: big-market-job
      # 执行器IP 配置为本机IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
      ip:
      # 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
      port: 9999
      # 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
      logpath: ./data/applogs/xxl-job/jobhandler
      # 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
      logretentiondays: 30

3、新增配置类

package cn.market.config;
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Slf4j
@Configuration
public class XxlJobAutoConfig {
    @Value("${xxl.job.admin.addresses}")
    private String adminAddresses;
    @Value("${xxl.job.accessToken}")
    private String accessToken;
    @Value("${xxl.job.executor.appname}")
    private String appname;
    @Value("${xxl.job.executor.address}")
    private String address;
    @Value("${xxl.job.executor.ip}")
    private String ip;
    @Value("${xxl.job.executor.port}")
    private int port;
    @Value("${xxl.job.executor.logpath}")
    private String logPath;
    @Value("${xxl.job.executor.logretentiondays}")
    private int logRetentionDays;
    @Bean
    public XxlJobSpringExecutor xxlJobExecutor() {
        log.info(">>>>>>>>>>> xxl-job config init.");
        XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
        xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
        xxlJobSpringExecutor.setAppname(appname);
        xxlJobSpringExecutor.setAddress(address);
        xxlJobSpringExecutor.setIp(ip);
        xxlJobSpringExecutor.setPort(port);
        xxlJobSpringExecutor.setAccessToken(accessToken);
        xxlJobSpringExecutor.setLogPath(logPath);
        xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
        return xxlJobSpringExecutor;
    }
    /**********************************************************************************************
     * 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP;
     *
     *      1、引入依赖:
     *          <dependency>
     *             <groupId>org.springframework.cloud</groupId>
     *             <artifactId>spring-cloud-commons</artifactId>
     *             <version>${version}</version>
     *         </dependency>
     *
     *      2、配置文件,或者容器启动变量
     *          spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
     *
     *      3、获取IP
     *          String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
     **********************************************************************************************/
}

4、写业务代码

@Slf4j
@Component()
public class TestJob {   
    @XxlJob("testJob")
    public void exec1() {
        log.info("测试====================" );
    }
 }
// 注意 @XxlJob 注解里面的值用于配置调度中心中JobHandler 配置

在这里插入图片描述

5、docker部署xxl-job

5.1、docker-compose-environment.yml 文件加上 xxl-job-admin 相关配置
  # http://127.0.0.1:9090/xxl-job-admin admin/123456 - 安装后稍等会访问即可
  # 官网镜像为 xuxueli/xxl-job-admin:2.4.1 
  xxl-job-admin:
    image: xuxueli/xxl-job-admin:2.4.1 #M1 Mac 更换镜像 kuschzzp/xxl-job-aarch64:2.4.0
    container_name: xxl-job-admin
    restart: always
    depends_on:
      - mysql
    ports:
      - "9090:9090"
    links:
      - mysql
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/xxl_job?serverTimezone=UTC&characterEncoding=utf8&autoReconnect=true&serverTimezone=Asia/Shanghai
      - SPRING_DATASOURCE_USERNAME=root
      - SPRING_DATASOURCE_PASSWORD=123456
      - SERVER_PORT=9090
    networks:
      - my-network
5.2、xxl_job.sql文件上传到mysql/sql 文件目录中,mysql启动执行

在这里插入图片描述

5.3、启动
docker-compose -f docker-compose-environment.yml

6、登录xxl-job页面并配置相关定时任务

// 登录页面
http://XXX:9090/xxl-job-admin admin/123456
// 新增执行器
注意   yml  和 页面执行器AppName 要一致
// 新增任务管理
注意JobHandler配置为代码@XxlJob注解里面的value  例如: @XxlJob("testJob")  

在这里插入图片描述

© 版权声明

相关文章