这一年干的很多事都是为了降低我的开源项目消息推送平台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版本:

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)

yum install java-1.8.0-openjdk.x86_64

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

yum install java-1.8.0-openjdk-devel.x86_64

设置环境变量

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

查看是否安装成功:

java -version

安装Git

直接使用yum安装:

yum install git

查看是否成功:

git

安装Maven

直接使用wget安装:

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

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

配置环境变量:

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

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

查看是否安装成功:

mvn -v

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

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

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

加入镜像配置:

<mirror>
 <id>alimaven</id>
 <name>aliyun maven</name>
 <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
 <mirrorOf>central</mirrorOf>
</mirror>
<mirror>
 <id>maven-default-http-blocker</id>
 <mirrorOf>external:http:*</mirrorOf>
 <name>Pseudo repository to mirror external repositories initially using HTTP.</name>
 <url>http://0.0.0.0/</url>
 <blocked>true</blocked>
</mirror>

安装Docker

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

yum -y install gcc

yum -y install gcc-c++

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

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

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

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

更新yum软件包索引:

yum makecache fast

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

yum -y install docker-ce

启动Docker:

systemctl start docker

下载回来的Docker版本::

docker version

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

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

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

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

创建软链:

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

测试是否安装成功:

docker-compose --version

安装NPM

下载npm包:

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

解压:

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

添加环境变量:

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

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

看看安装成功了没有:

node -v

下载pm2来启动前端项目:

npm install -g pm2

DOCKER-COMPOSE 启动AUSTIN

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

mkdir 3y

进入到文件夹中:

cd 3y

克隆austin后端的代码:

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

克隆austin前端的代码:

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

进入到austin后端的项目里:

cd austin/

用mvn命令打包

mvn clean package

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

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

docker-compose up --build

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

version: '3'
services:
austin-mysql:
  environment:
    TZ: Asia/Shanghai
    MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
    MYSQL_ROOT_HOST: '%'
    MYSQL_ROOT_PASSWORD: "root123_A"
  restart: always
  container_name: austin-mysql
  image: mysql:5.7
  hostname: mysql
  command: --init-file /docker-entrypoint-initdb.d/init.sql
  volumes:
    - ./sql/austin.sql:/docker-entrypoint-initdb.d/init.sql
  ports:
    - "3306:3306"
  networks:
    - app
austin-redis:
  image: redis:3.2
  ports:
    - "6379:6379"
  restart: always
  container_name: austin-redis
  volumes:
    - ./docker/redis/redis.conf:/usr/local/etc/redis/redis.conf:rw
  command:
    /bin/bash -c "redis-server /usr/local/etc/redis/redis.conf"
  networks:
    - app
austin-zookeeper:
  image: wurstmeister/zookeeper
  container_name: austin-zookeeper
  volumes:
    - "/etc/localtime:/etc/localtime"
  ports:
    - "2181:2181"
  networks:
    - app
austin-kafka:
  image: wurstmeister/kafka
  container_name: austin-kafka
  volumes:
    - "/etc/localtime:/etc/localtime"
  environment:
    KAFKA_BROKER_ID: 0
    KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://austin-kafka:9092
    KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
    KAFKA_ZOOKEEPER_CONNECT: austin-zookeeper:2181
    KAFKA_CREATE_TOPICS: "austinBusiness:1:1,austinRecall:1:1,austinTraceLog:1:1"
    KAFKA_HEAP_OPTS: -Xmx512M -Xms256M
  ports:
    - "9092:9092"
  depends_on:
    - austin-zookeeper
  networks:
    - app
jobmanager:
  image: flink:latest
  ports:
    - "8081:8081"
  command:
    - jobmanager
  environment:
    - |
      FLINK_PROPERTIES=
      jobmanager.rpc.address: jobmanager
    - SET_CONTAINER_TIMEZONE=true
    - CONTAINER_TIMEZONE=Asia/Shanghai
    - TZ=Asia/Shanghai
  volumes:
    - ./austin-stream/target/austin-stream-0.0.1-SNAPSHOT.jar:/opt/austin-stream-0.0.1-SNAPSHOT.jar:rw
  depends_on:
    - austin-zookeeper
    - austin-kafka
  networks:
    - app
taskmanager:
  image: flink:latest
  depends_on:
    - jobmanager
    - austin-zookeeper
    - austin-kafka
  command: taskmanager
  environment:
    - |
      FLINK_PROPERTIES=
      jobmanager.rpc.address: jobmanager
      taskmanager.numberOfTaskSlots: 2
    - SET_CONTAINER_TIMEZONE=true
    - CONTAINER_TIMEZONE=Asia/Shanghai
    - TZ=Asia/Shanghai
  networks:
    - app
austin-xxl-job:
  image: xuxueli/xxl-job-admin:2.3.0
  container_name: austin-xxl-job
  ports:
    - "8080:8080"
  environment:
    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'
  networks:
    - app
  depends_on:
    - austin-mysql
austin-nacos:
  container_name: austin-nacos-server
  image: nacos/nacos-server:v2.1.0
  environment:
    - MODE=standalone
    - PREFER_HOST_MODE=hostname
    - SPRING_DATASOURCE_PLATFORM=mysql
    - MYSQL_SERVICE_HOST=austin-mysql
    - MYSQL_SERVICE_PORT=3306
    - MYSQL_SERVICE_USER=root
    - MYSQL_SERVICE_PASSWORD=root123_A
    - MYSQL_SERVICE_DB_NAME=nacos_config
    - JVM_XMS=128m
    - JVM_XMX=128m
    - JVM_XMN=128m
  volumes:
    - /home/nacos/single-logs/nacos-server:/home/nacos/logs
    - /home/nacos/init.d:/home/nacos/init.d
  ports:
    - 8848:8848
    - 9848:9848
    - 9849:9849
  depends_on:
    - austin-mysql
  restart: on-failure
  networks:
    - app
austin:
  build:
    context: ./
  ports:
    - "7777:7777"
  restart: always
  container_name: austin
  environment:
    - SET_CONTAINER_TIMEZONE=true
    - CONTAINER_TIMEZONE=Asia/Shanghai
    - TZ=Asia/Shanghai
  depends_on:
    - austin-redis
    - austin-mysql
    - austin-zookeeper
    - austin-kafka
    - austin-xxl-job
    - austin-nacos
  networks:
    - app
networks:
app:

启动前端AUSTIN-ADMIN

去到austin-admin的目录下

cd /root/3y/austin-admin

安装必要的依赖:

npm i

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

vim index.html

改完之后,直接启动:

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. 入门文章学习(一)-Beginner Tutorial

    Abstract: 参照"背景知识查阅"一文的学习路径,对几篇文章的学习做了记录.这是"Beginner Tutorial"一文的学习笔记. 文章链接: htt ...

  2. lc.977 有序数组的平方

    题目描述 给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序 排序. 输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100] ...

  3. 搬运 nginx代理https

    oauth2-client在Nginx代理后遇到的问题和解决方案  2020-01-17 2020-05-27  TECH 30 MINUTES READ (ABOUT 4442 WORDS) OAu ...

  4. js屏蔽开发者工具

    一.屏蔽浏览器右键菜单审查元素 document.oncontextmenu = function () { return false; }; 二.屏蔽F12以及ctrl+shift+i 打开调试工具 ...

  5. python xlwings实用操作记录

    import xlwings as xw tfile="test.xlsx" newfile="new.xlsx" app = xw.App(visible=F ...

  6. 快速掌握Linux三剑客命令使用

    前言 Linux三剑客指的是grep.sed以及awk命令的使用,这三个命令功能异常强大,大到没朋友.grep命令主打"查找",sed命令主打"编辑",awk命 ...

  7. Centos7 禁用IPV6地址的方法

    方法 1 编辑文件/etc/sysctl.conf, vi /etc/sysctl.conf 添加下面的行: net.ipv6.conf.all.disable_ipv6 =1 net.ipv6.co ...

  8. MySQL学习(六)timestamp & datetime 区别

    参考博客: https://cloud.tencent.com/developer/article/1407693 timestamp只使用datetime一半的存储空间,并且会根据时区变化,具有特殊 ...

  9. Linux & 标准C语言学习 <DAY13>

    一.字符串     字符:类字形单位或符号,包括字母.数字.运算符号.标点符号和其他符号,以及一些功能性符号     串:是一种数据结构,存储类型相同的若干个数据,对于串型结构的处理是批量性的,会从头 ...

  10. 加密脚本分析—evil.py

    加密脚本分析-evil.py 1.题目 源文件 一共两个文件 enc_flag.txt evil.py(原文件无注释) 1 # coding: utf-8 2 3 import base64 4 im ...