docker搭建XXLjob

最近需要使用到調度系統,爲了方便管理,直觀,所以推薦使用xxljob
官方鏈接:xxl-job-admin
開始本文的主題,如果根據本文操作,前提是要安裝 docker

一 安裝mysql(使用yum或者docker安裝的都可以,以下使用的是docker)

root@localhost tmp]# docker run -itd --name xxl-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6.40
Unable to find image 'mysql:5.6.40' locally
Trying to pull repository docker.io/library/mysql ...
5.6.40: Pulling from docker.io/library/mysql
be8881be8156: Pull complete
c3995dabd1d7: Pull complete
9931fdda3586: Pull complete
bb1b6b6eff6a: Pull complete
a65f125fa718: Pull complete
62fa8db7a5dc: Pull complete
ea8988c5d951: Pull complete
a14d36079892: Pull complete
ae927d273de4: Pull complete
7cd17abd57c5: Pull complete
adc2c9e19981: Pull complete
Digest: sha256:4902cd80486dca889205576a698a3e6534376ef6d8b94ef9fc9c61e891f1cd15
Status: Downloaded newer image for docker.io/mysql:5.6.40
b3b4acb67fc71f615ab602d43da07e0f99cefd4db114315f3fac714f6f00e32f
[root@localhost tmp]# docker ps -l
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
b3b4acb67fc7        mysql:5.6.40        "docker-entrypoint..."   3 minutes ago       Up 3 minutes        0.0.0.0:3306->3306/tcp   xxl-mysql
[root@localhost tmp]# mkdir xxl-job-1.9.1/doc/db -p
[root@localhost tmp]# cd xxl-job-1.9.1/doc/db/
[root@localhost db]# ll
總用量 0
[root@localhost db]# vim tables_xxl_job.sql
[root@localhost db]# ll
總用量 8
-rw-r--r-- 1 root root 6450 12月 13 16:12 tables_xxl_job.sql
[root@localhost db]# docker cp /tmp/xxl-job-1.9.1/doc/db/tables_xxl_job.sql xxl-mysql:/tmp
[root@localhost db]# docker exec -it xxl-mysql /bin/bash
root@b3b4acb67fc7:/# mysql -uroot -p123456
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.40 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE DATABASE `xxl-job` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

mysql> source /tmp/tables_xxl_job.sql
Query OK, 1 row affected (0.01 sec)

Database changed
Query OK, 0 rows affected (0.03 sec)

Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected, 2 warnings (0.01 sec)

Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.01 sec)

Query OK, 1 row affected, 1 warning (0.00 sec)

Query OK, 1 row affected (0.00 sec)

Query OK, 1 row affected (0.00 sec)

Query OK, 1 row affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

在XXLjob源碼中有sql 文件,直接導入到mysql裏就可以啦

二 、安裝xxlJOB

[root@localhost mnt]# docker pull xuxueli/xxl-job-admin:2.1.2
Trying to pull repository docker.io/xuxueli/xxl-job-admin ...
2.1.2: Pulling from docker.io/xuxueli/xxl-job-admin
795df959b1e6: Pull complete
a2e8defe034f: Pull complete
50d8dad75e60: Pull complete
ad497c735995: Pull complete
40288f52be3a: Pull complete
7b39862ad1f3: Pull complete
2b4a4683cf71: Pull complete
Digest: sha256:c72604c8357dd9fbba823f04878be2a7b8bc77cef1e51e8007ee02ec72d9bb59
Status: Downloaded newer image for docker.io/xuxueli/xxl-job-admin:2.1.2
[root@localhost mnt]# docker images
REPOSITORY                        TAG                 IMAGE ID            CREATED             SIZE
docker.io/xuxueli/xxl-job-admin   2.1.2               cfe34e8d6785        18 hours ago        227 MB
docker.io/mongo                   latest              965553e202a4        6 weeks ago         363 MB
docker.io/wangyanglinux/myapp     v1                  d4a5e0eaa84f        21 months ago       15.5 MB

三、運行

[root@localhost db]# docker ps -l
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
82bdd506aa64        cfe34e8d6785        "sh -c 'java -jar ..."   47 seconds ago      Up 47 seconds       0.0.0.0:8080->8080/tcp   xxl-job-admin
[root@localhost db]# docker stop 82bdd506aa64
82bdd506aa64
[root@localhost db]# docker rm 82bdd506aa64
82bdd506aa64
[root@localhost db]# docker run -e PARAMS="--spring.datasource.url=jdbc:mysql://《mysql地址》:3306/xxl_job?Unicode=true&characterEncoding=UTF-8 --spring.datasource.username=《mysql賬號》  --spring.datasource.password=《mysql密碼》" -p 8080:8080 -v /tmp:/data/applogs --name xxl-job-admin  --privileged=true -d cfe34e8d6785
[root@localhost db]# docker ps -l
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
ae8ce52568de        cfe34e8d6785        "sh -c 'java -jar ..."   14 seconds ago      Up 12 seconds       0.0.0.0:8080->8080/tcp   xxl-job-admin
[root@localhost db]# docker logs -t -f --tail 200f ae8ce52568de
2019-12-13T08:28:46.018966000Z   .   ____          _            __ _ _
2019-12-13T08:28:46.019267000Z  /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
2019-12-13T08:28:46.019546000Z ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
2019-12-13T08:28:46.019999000Z  \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
2019-12-13T08:28:46.020280000Z   '  |____| .__|_| |_|_| |_\__, | / / / /
2019-12-13T08:28:46.020631000Z  =========|_|==============|___/=/_/_/_/
2019-12-13T08:28:46.034079000Z  :: Spring Boot ::       (v1.5.22.RELEASE)
2019-12-13T08:28:46.497399000Z 16:28:46.490 logback [main] INFO  c.x.job.admin.XxlJobAdminApplication - Starting XxlJobAdminApplication on ae8ce52568de with PID 6 (/app.jar started by root in /)
2019-12-13T08:28:46.502447000Z 16:28:46.497 logback [main] INFO  c.x.job.admin.XxlJobAdminApplication - No active profile set, falling back to default profiles: default
2019-12-13T08:28:47.290910000Z 16:28:47.286 logback [main] INFO  o.s.b.c.e.AnnotationConfigEmbeddedWebApplicationContext - Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@41480ec1: startup date [Fri Dec 13 16:28:47 CST 2019]; root of context hierarchy
2019-12-13T08:28:47.355948000Z 16:28:47.350 logback [background-preinit] INFO  o.h.validator.internal.util.Version - HV000001: Hibernate Validator 5.3.6.Final
2019-12-13T08:28:51.315954000Z 16:28:51.314 logback [main] INFO  o.s.b.c.e.t.TomcatEmbeddedServletContainer - Tomcat initialized with port(s): 8080 (http)
2019-12-13T08:28:51.344838000Z 16:28:51.341 logback [main] INFO  o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8080"]
2019-12-13T08:28:51.389910000Z 16:28:51.384 logback [main] INFO  o.a.catalina.core.StandardService - Starting service [Tomcat]
2019-12-13T08:28:51.390319000Z 16:28:51.385 logback [main] INFO  o.a.catalina.core.StandardEngine - Starting Servlet Engine: Apache Tomcat/8.5.43
2019-12-13T08:28:51.747611000Z 16:28:51.746 logback [localhost-startStop-1] INFO  o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring embedded WebApplicationContext
2019-12-13T08:28:51.748453000Z 16:28:51.746 logback [localhost-startStop-1] INFO  o.s.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 4460 ms
2019-12-13T08:28:52.587753000Z 16:28:52.582 logback [localhost-startStop-1] INFO  o.s.b.w.s.ServletRegistrationBean - Mapping servlet: 'dispatcherServlet' to [/]
2019-12-13T08:28:52.600791000Z 16:28:52.598 logback [localhost-startStop-1] INFO  o.s.b.w.s.FilterRegistrationBean - Mapping filter: 'metricsFilter' to: [/*]
2019-12-13T08:28:52.601183000Z 16:28:52.598 logback [localhost-startStop-1] INFO  o.s.b.w.s.FilterRegistrationBean - Mapping filter: 'characterEncodingFilter' to: [/*]
2019-12-13T08:28:52.601480000Z 16:28:52.599 logback [localhost-startStop-1] INFO  o.s.b.w.s.FilterRegistrationBean - Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2019-12-13T08:28:52.601822000Z 16:28:52.599 logback [localhost-startStop-1] INFO  o.s.b.w.s.FilterRegistrationBean - Mapping filter: 'httpPutFormContentFilter' to: [/*]
2019-12-13T08:28:52.602906000Z 16:28:52.599 logback [localhost-startStop-1] INFO  o.s.b.w.s.FilterRegistrationBean - Mapping filter: 'requestContextFilter' to: [/*]
2019-12-13T08:28:52.603830000Z 16:28:52.599 logback [localhost-startStop-1] INFO  o.s.b.w.s.FilterRegistrationBean - Mapping filter: 'webRequestLoggingFilter' to: [/*]
2019-12-13T08:28:52.604046000Z 16:28:52.600 logback [localhost-startStop-1] INFO  o.s.b.w.s.FilterRegistrationBean - Mapping filter: 'applicationContextIdFilter' to: [/*]
2019-12-13T08:28:55.514688000Z 16:28:55.511 logback [main] INFO  c.x.j.a.c.scheduler.XxlJobScheduler - >>>>>>>>> init xxl-job admin success.
2019-12-13T08:28:55.610190000Z 16:28:55.607 logback [xxl-job, admin JobRegistryMonitorHelper] WARN  o.a.tomcat.jdbc.pool.ConnectionPool - maxIdle is larger than maxActive, setting maxIdle to: 30
2019-12-13T08:28:57.373683000Z 16:28:57.369 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerAdapter - Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@41480ec1: startup date [Fri Dec 13 16:28:47 CST 2019]; root of context hierarchy
2019-12-13T08:28:57.566437000Z 16:28:57.562 logback [main] INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/chartInfo]}" onto public com.xxl.job.core.biz.model.ReturnT<java.util.Map<java.lang.String, java.lang.Object>> com.xxl.job.admin.controller.IndexController.chartInfo(java.util.Date,java.util.Date)

啓動成功以後,使用 ip:8080/xxl-job-admin,就可以看到如圖
在這裏插入圖片描述
以上只是xxljob啓動成,如果直接使用執行器,請繼續瀏覽……

一、打開本地項目源碼,進行打包(本人使用IDEA)

打包的方式很多,我使用了maven 進行打包如圖
在這裏插入圖片描述
ps:記得修改執行器中的,日誌地址,也要記得在服務器上創建可以讀寫的日誌地址,記得要改配置文件地址,要跟調度器地址一樣
打包成功上傳到服務器上,某個目錄下《本人的目錄 /tmp/Dockerfile》
在這裏插入圖片描述
在此目錄下有兩個文件,一個就是剛纔打包好的文件,另外一個是dockerfile
dockerfile內容如下

# Pull base image
FROM  java:8

MAINTAINER "[email protected]"

VOLUME /tmp

# 添加
ADD xxl-job-executor-sample-springboot-2.1.2.jar app.jar
RUN bash -c 'touch /app.jar'


# Define default command.
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

#設置時區
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

dockerfile指令:  
Dockerfile由多條指令組成,每條指令在編譯鏡像時執行相應的程序完成某些功能,由指令+參數組成,以逗號分隔,#作爲註釋起始符,雖說指令不區分大小寫,但是一般指令使用大些,參數使用小寫
在這裏插入圖片描述
文件都存在以後,使用 docker build -t xxl-job-executor-sample-springboot-2.1.2:v1.0 . 進行創建images 鏡像
等到執行成功,就可以使用 docker images 看到剛纔執行好的鏡像了,然後使用

//啓動一個執行器 ,也可以啓動多個,只需要改動 端口,和執行器的端口
docker run --privileged=true -d -p 8081:8080 -p 9999:9999 xxl-job-executor-sample-springboot-2.1.2:2.1.2 
docker run --privileged=true -d -p 8082:8080 -p 9998:9999 xxl-job-executor-sample-springboot-2.1.2:2.1.2 

啓動是用docker logs 容器名 --tail 100 -f 來查看日誌

最後的結果:如圖
在這裏插入圖片描述
到此就搭建成功,可以使用了。歡迎大家留言指正。
本人也開通了微信公衆號,歡迎大家關注,一起交流。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章