这一年干的很多事都是为了降低我的开源项目消息推送平台austin使用门槛

如果想学Java项目的,强烈推荐我的开源项目消息推送平台Austin(8K stars) ,可以用作毕业设计,可以用作校招,可以看看生产环境是怎么推送消息的。开源项目消息推送平台austin仓库地址:

消息推送平台推送下发【邮件】【短信】【微信服务号】【微信小程序】【企业微信】【钉钉】等消息类型

今天想跟大家聊的是austin的部署体验问题,很多人可能MySQL和Redis都不想手动装,就想把项目给启动起来体验下,看看能干些什么。我想了一下,要想达到这个效果,那现在应该docker-compose部署是比较合适的了。

但由于现在austin还在持续更新,近期应该还没有一个稳定的版本,所以目前我是基于”源码打包“的方式去做的。把我的服务器给重装下,让大家感受下。

所需的必要依赖

基于系统:Centos 7.6 x86_64

1、JDK 1.8

2、Maven

3、Git

4、docker

5、docker-compose

6、npm(前端依赖)

这些必要的依赖,一般开发机器上都会有的把?什么?还没有?那我只能把服务器给重装一遍,手把手带着大家来一遍吧。

JDK8 安装

查看可以装的JDK版本:

  1. yum search java|grep jdk

下载JDK 1.8

(安装目录在:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.352.b08-2.el7_9.x86_64)

(默认只有JRE)

  1. yum install java-1.8.0-openjdk.x86_64

为了后续安装Maven,所以要把JDK也安装上:

  1. yum install java-1.8.0-openjdk-devel.x86_64

设置环境变量

  1. vi /etc/profile
  1. JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.352.b08-2.el7_9.x86_64
  2. JRE_HOME=$JAVA_HOME/jre
  3. CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
  4. PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
  5. export JAVA_HOME JRE_HOME CLASS_PATH PATH
  1. source /etc/profile

查看是否安装成功:

  1. java -version

安装Git

直接使用yum安装:

  1. yum install git

查看是否成功:

  1. git

安装Maven

直接使用wget安装:

  1. wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz --no-check-certificate

解压安装得到的maven

  1. tar -zxvf apache-maven-3.6.3-bin.tar.gz

配置环境变量:

(我的安装目录就在/root/apache-maven-3.6.3)

  1. vi /etc/profile
  1. MAVEN_HOME=/root/apache-maven-3.6.3
  2. export PATH=${MAVEN_HOME}/bin:${PATH}
  1. source /etc/profile

查看是否安装成功:

  1. mvn -v

顺带把maven的镜像也改掉吧,不然官方默认的下载很慢:

(我的安装目录就在/root/apache-maven-3.6.3)

  1. vim /root/apache-maven-3.6.3/conf/settings.xml

加入镜像配置:

  1. <mirror>
  2.  <id>alimaven</id>
  3.  <name>aliyun maven</name>
  4.  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  5.  <mirrorOf>central</mirrorOf>
  6. </mirror>
  7. <mirror>
  8.  <id>maven-default-http-blocker</id>
  9.  <mirrorOf>external:http:*</mirrorOf>
  10.  <name>Pseudo repository to mirror external repositories initially using HTTP.</name>
  11.  <url>http://0.0.0.0/</url>
  12.  <blocked>true</blocked>
  13. </mirror>

安装Docker

首先我们需要安装GCC相关的环境:

  1. yum -y install gcc

  2. yum -y install gcc-c++

安装Docker需要的依赖软件包:

  1. yum install -y yum-utils device-mapper-persistent-data lvm2

设置国内的镜像(提高速度)

  1. yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新yum软件包索引:

  1. yum makecache fast

安装DOCKER CE(注意:Docker分为CE版和EE版,一般我们用CE版就够用了.)

  1. yum -y install docker-ce

启动Docker:

  1. systemctl start docker

下载回来的Docker版本::

  1. docker version

运行以下命令以下载 Docker Compose 的当前稳定版本:

  1. curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

将可执行权限应用于二进制文件:

  1. sudo chmod +x /usr/local/bin/docker-compose

创建软链:

  1. sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

测试是否安装成功:

  1. docker-compose --version

安装NPM

下载npm包:

  1. wget https://npm.taobao.org/mirrors/node/v10.14.1/node-v10.14.1-linux-x64.tar.gz

解压:

  1. tar -xvf node-v10.14.1-linux-x64.tar.gz

添加环境变量:

(我的安装目录在:/root/node-v10.14.1-linux-x64)

  1. vi /etc/profile
  1. export NODE_HOME=/root/node-v10.14.1-linux-x64
  2. export PATH=$NODE_HOME/bin:$PATH
  1. source /etc/profile

看看安装成功了没有:

  1. node -v

下载pm2来启动前端项目:

  1. npm install -g pm2

DOCKER-COMPOSE 启动AUSTIN

先新建一个文件夹存放austin的项目吧:

  1. mkdir 3y

进入到文件夹中:

  1. cd 3y

克隆austin后端的代码:

  1. git clone https://gitee.com/zhongfucheng/austin.git

克隆austin前端的代码:

  1. git clone https://gitee.com/zhongfucheng/austin-admin.git

进入到austin后端的项目里:

  1. cd austin/

用mvn命令打包

  1. mvn clean package

经过一顿的包依赖下载之后,我们就能看到打包已经成功了

到这,我们就可以使用docker-compose来启动Austin:

  1. docker-compose up --build

docker-compose把mysql/flink/redis/xxl-job/kafka/nacos等项目用到的依赖都已经打进去了,一键就会把各种环境启动起来!

  1. version: '3'
  2. services:
  3. austin-mysql:
  4.   environment:
  5.     TZ: Asia/Shanghai
  6.     MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
  7.     MYSQL_ROOT_HOST: '%'
  8.     MYSQL_ROOT_PASSWORD: "root123_A"
  9.   restart: always
  10.   container_name: austin-mysql
  11.   image: mysql:5.7
  12.   hostname: mysql
  13.   command: --init-file /docker-entrypoint-initdb.d/init.sql
  14.   volumes:
  15.     - ./sql/austin.sql:/docker-entrypoint-initdb.d/init.sql
  16.   ports:
  17.     - "3306:3306"
  18.   networks:
  19.     - app
  20. austin-redis:
  21.   image: redis:3.2
  22.   ports:
  23.     - "6379:6379"
  24.   restart: always
  25.   container_name: austin-redis
  26.   volumes:
  27.     - ./docker/redis/redis.conf:/usr/local/etc/redis/redis.conf:rw
  28.   command:
  29.     /bin/bash -c "redis-server /usr/local/etc/redis/redis.conf"
  30.   networks:
  31.     - app
  32. austin-zookeeper:
  33.   image: wurstmeister/zookeeper
  34.   container_name: austin-zookeeper
  35.   volumes:
  36.     - "/etc/localtime:/etc/localtime"
  37.   ports:
  38.     - "2181:2181"
  39.   networks:
  40.     - app
  41. austin-kafka:
  42.   image: wurstmeister/kafka
  43.   container_name: austin-kafka
  44.   volumes:
  45.     - "/etc/localtime:/etc/localtime"
  46.   environment:
  47.     KAFKA_BROKER_ID: 0
  48.     KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://austin-kafka:9092
  49.     KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
  50.     KAFKA_ZOOKEEPER_CONNECT: austin-zookeeper:2181
  51.     KAFKA_CREATE_TOPICS: "austinBusiness:1:1,austinRecall:1:1,austinTraceLog:1:1"
  52.     KAFKA_HEAP_OPTS: -Xmx512M -Xms256M
  53.   ports:
  54.     - "9092:9092"
  55.   depends_on:
  56.     - austin-zookeeper
  57.   networks:
  58.     - app
  59. jobmanager:
  60.   image: flink:latest
  61.   ports:
  62.     - "8081:8081"
  63.   command:
  64.     - jobmanager
  65.   environment:
  66.     - |
  67.       FLINK_PROPERTIES=
  68.       jobmanager.rpc.address: jobmanager
  69.     - SET_CONTAINER_TIMEZONE=true
  70.     - CONTAINER_TIMEZONE=Asia/Shanghai
  71.     - TZ=Asia/Shanghai
  72.   volumes:
  73.     - ./austin-stream/target/austin-stream-0.0.1-SNAPSHOT.jar:/opt/austin-stream-0.0.1-SNAPSHOT.jar:rw
  74.   depends_on:
  75.     - austin-zookeeper
  76.     - austin-kafka
  77.   networks:
  78.     - app
  79. taskmanager:
  80.   image: flink:latest
  81.   depends_on:
  82.     - jobmanager
  83.     - austin-zookeeper
  84.     - austin-kafka
  85.   command: taskmanager
  86.   environment:
  87.     - |
  88.       FLINK_PROPERTIES=
  89.       jobmanager.rpc.address: jobmanager
  90.       taskmanager.numberOfTaskSlots: 2
  91.     - SET_CONTAINER_TIMEZONE=true
  92.     - CONTAINER_TIMEZONE=Asia/Shanghai
  93.     - TZ=Asia/Shanghai
  94.   networks:
  95.     - app
  96. austin-xxl-job:
  97.   image: xuxueli/xxl-job-admin:2.3.0
  98.   container_name: austin-xxl-job
  99.   ports:
  100.     - "8080:8080"
  101.   environment:
  102.     PARAMS: '--spring.datasource.url=jdbc:mysql://austin-mysql:3306/xxl_job?Unicode=true&characterEncoding=UTF-8 --spring.datasource.username=root --spring.datasource.password=root123_A'
  103.   networks:
  104.     - app
  105.   depends_on:
  106.     - austin-mysql
  107. austin-nacos:
  108.   container_name: austin-nacos-server
  109.   image: nacos/nacos-server:v2.1.0
  110.   environment:
  111.     - MODE=standalone
  112.     - PREFER_HOST_MODE=hostname
  113.     - SPRING_DATASOURCE_PLATFORM=mysql
  114.     - MYSQL_SERVICE_HOST=austin-mysql
  115.     - MYSQL_SERVICE_PORT=3306
  116.     - MYSQL_SERVICE_USER=root
  117.     - MYSQL_SERVICE_PASSWORD=root123_A
  118.     - MYSQL_SERVICE_DB_NAME=nacos_config
  119.     - JVM_XMS=128m
  120.     - JVM_XMX=128m
  121.     - JVM_XMN=128m
  122.   volumes:
  123.     - /home/nacos/single-logs/nacos-server:/home/nacos/logs
  124.     - /home/nacos/init.d:/home/nacos/init.d
  125.   ports:
  126.     - 8848:8848
  127.     - 9848:9848
  128.     - 9849:9849
  129.   depends_on:
  130.     - austin-mysql
  131.   restart: on-failure
  132.   networks:
  133.     - app
  134. austin:
  135.   build:
  136.     context: ./
  137.   ports:
  138.     - "7777:7777"
  139.   restart: always
  140.   container_name: austin
  141.   environment:
  142.     - SET_CONTAINER_TIMEZONE=true
  143.     - CONTAINER_TIMEZONE=Asia/Shanghai
  144.     - TZ=Asia/Shanghai
  145.   depends_on:
  146.     - austin-redis
  147.     - austin-mysql
  148.     - austin-zookeeper
  149.     - austin-kafka
  150.     - austin-xxl-job
  151.     - austin-nacos
  152.   networks:
  153.     - app
  154. networks:
  155. app:

启动前端AUSTIN-ADMIN

去到austin-admin的目录下

  1. cd /root/3y/austin-admin

安装必要的依赖:

  1. npm i

把后端的请求链接改为自己的地址:

  1. vim index.html

改完之后,直接启动:

  1. pm2 start server.js

(如果端口3000已经存在了,可以修改 server.js的配置)

验证功能有无问题

我们就以邮件为例,先建个邮件账号:

建个消息模板:

点个测试按钮看看后端的日志是否正常:

后话

看着文章的内容很多,实际上当我们拥有了这些开发环境了之后,部署只是一行简单的docker-compose命令,要实现这个玩意依赖的就俩个文件:docker-compose.ymlDockerfile

这两个文件写起来倒是简单,事后看完也觉得简单,但是中途还是遇到了不少的坑的。至于坑嘛,这玩意还是得自己一步一步踩才有意思,我即便写了,你没遇到也不会有啥感受的。

有了现在这个环境了以后,后面等我更新内容,你们就可以直接pull下最新的代码,编译打包一下,用docker-compose启动就完事啦。

如果想学Java项目的,强烈推荐我的开源项目消息推送平台Austin(8K stars) ,可以用作毕业设计,可以用作校招,可以看看生产环境是怎么推送消息的。开源项目消息推送平台austin仓库地址:

消息推送平台推送下发【邮件】【短信】【微信服务号】【微信小程序】【企业微信】【钉钉】等消息类型

docker-compose一键部署java开源项目的更多相关文章

  1. Docker Compose 一键部署Nginx代理Tomcat集群

    Docker Compose 一键部署Nginx代理Tomcat集群 目录结构 [root@localhost ~]# tree compose_nginx_tomcat/ compose_nginx ...

  2. Docker Compose 一键部署多节点爬虫程序

    Docker Compose 一键部署多节点爬虫程序 目录结构 [root@localhost ~]# tree compose_crawler/ compose_crawler/ ├── cento ...

  3. Docker Compose 一键部署LNMP

    Docker Compose 一键部署LNMP 目录结构 [root@localhost ~]# tree compose_lnmp/ compose_lnmp/ ├── docker-compose ...

  4. 开源跨境ERP - 小老板 Docker/Docker Compose一键部署

    先上部署成功后的截图,各个菜单点击均无报错 DockerCompose 包含: 1. 三个mysql5.7数据库 2. redis php会话存储+ memcached 3. 小老板php主程序 do ...

  5. [Docker]compose一键部署nginx

    Docker-compose部署nginx 创建配置文件 mkdir -p /usr/local/docker/nginx cat > /usr/local/docker/nginx/docke ...

  6. Docker Compose一键部署Nginx反向代理Tomcat集群

    目录结构如下 mysql/conf/my.cnf [mysqld] user=mysql port=3306 datadir=/var/lib/mysql socket=/var/lib/mysql/ ...

  7. windows一键部署java项目

    windows一键部署java项目 因为公司需求,要在windows的环境上做一键部署启动java项目,同时还要支持从安装界面动态修改配置文件的IP地址.就像安装软件一样将jdk,tomcat,mys ...

  8. 3月份GitHub上最热门的Java开源项目

    今天,我们来盘点3月份GitHub上最热门的Java项目的时候了,如果你每月都有关注猿妹发布的排行榜,那么本月的Java项目对你来说一定不陌生,这些都是曾经多次出现在榜单中的项目: 1 advance ...

  9. Docker Gitlab CI 部署 Spring Boot 项目

    目前在学习这一块的内容,但是可能每个人环境都不同,导致找不到一篇博客能够完全操作下来没有错误的,所以自己也写一下,记录一下整个搭建的过程. Docker 的安装这里就不赘述了,基本上几行命令都可以了, ...

  10. 阿里巴巴的26款Java开源项目

    阿里巴巴的26款Java开源项目 开源展示了人类共同协作,成果分享的魅力.没有任何一家网络公司可以不使用开源技术,仅靠自身技术发展起来.“取之于开源,用之于开源,才能促进开源的良性发展”,阿里巴巴各个 ...

随机推荐

  1. Js 代码递归实现树形数据与数组相互转换。

    贴代码: // Grid->Tree 结构组装. var tree = []; this.setTreeData(table, tree, ""); //组装树形 setTr ...

  2. linux系统下载redis时make报错:没有名为什么》》》》》

    明明自己下载了gcc-c++环境,但是make还是一直报错,没有名为什么的>>>>> 其实这个问题主要的原因的是gcc的版本过低了,你可以gcc -v查看一下你的版本,是 ...

  3. SDC细节归纳

    能否写出一份严谨的SDC约束文件,决定了芯片tapeout后数字电路能否正常工作,或者少一些bug.所以写好SDC约束文件,是芯片设计的关键一步. 因此,归纳.整理SDC约束的细节要点很重要,有助于减 ...

  4. Js:当前日期格式化与比较大小

    //日期格式转换 getCurrentTime() { var date = new Date();//当前时间 var year = date.getFullYear() //返回指定日期的年份 v ...

  5. 121、商城业务---订单服务---rabbitmq消息积压、丢失、重复等解决方案

  6. Anaconda与conda、pip与conda的区别 - 搬运

    Anaconda与conda.pip与conda的区别 风影忍着   转自:https://zhuanlan.zhihu.com/p/379321816     作为一个Python初学者,在请教资深 ...

  7. docker基本操作 备忘

    docker 基本操作 通过镜像运行容器 - docker run -d -it -p 5555:5555 镜像名 启动容器,并将进入容器中的bash命令行 进入容器 - docker attach ...

  8. beta冲刺:总结随笔

    这个作业属于哪个课程 <班级的链接> 这个作业要求在哪里 <作业要求的链接> 这个作业的目标 beta冲刺总结 作业正文 .... 其他参考文献 ... 一.预期计划 | 6. ...

  9. Celery框架从入门到精通

    目录 Celery介绍.安装.基本使用 一.Celery服务 1.celery架构 2.celery快速使用 二.Celer包结构 1.创建clery包结构 2.Celery执行异步任务.延迟任务.定 ...

  10. Spring设计模式——原型模式

    原型模式 原型模式(Prototype Pattern),是指原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象. 原型模式主要适用于以下场景: 类初始化消耗资源较多 使用new生成一个对象 ...