docker-compose一键部署java开源项目

这一年干的很多事都是为了降低我的开源项目音讯推送渠道austin使用门槛

假如想学Java项目的,强烈推荐我的开源项目音讯推送渠道Austin(8K stars) ,能够用作毕业设计,能够用作校招,能够看看出产环境是怎样推送音讯的。开源项目音讯推送渠道austin库房地址:

音讯推送渠道推送下发【邮件】【短信】【微信服务号】【微信小程序】【企业微信】【钉钉】等音讯类型

  • gitee.com/zhongfuchen…
  • github.com/ZhongFuChen…

今日想跟咱们聊的是austin的布置体验问题,很多人或许MySQL和Redis都不想手动装,就想把项目给发动起来体验下,看看能干些什么。我想了一下,要想达到这个作用,那现在应该docker-compose布置是比较合适的了。

docker-compose一键部署java开源项目

但由于现在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

docker-compose一键部署java开源项目

装置Git

直接使用yum装置:

yum install git

检查是否成功:

git

docker-compose一键部署java开源项目

装置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

docker-compose一键部署java开源项目

顺带把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一键部署java开源项目

运转以下指令以下载 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

docker-compose一键部署java开源项目

装置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

docker-compose一键部署java开源项目

下载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一键部署java开源项目

到这,咱们就能够使用docker-compose来发动Austin:

docker-compose up --build

docker-compose一键部署java开源项目

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

docker-compose一键部署java开源项目

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

vim index.html

docker-compose一键部署java开源项目

改完之后,直接发动:

pm2 start server.js

docker-compose一键部署java开源项目

(假如端口3000现已存在了,能够修正 server.js的装备)

docker-compose一键部署java开源项目

验证功能有无问题

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

docker-compose一键部署java开源项目

建个音讯模板:

docker-compose一键部署java开源项目

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

docker-compose一键部署java开源项目

docker-compose一键部署java开源项目

后话

看着文章的内容很多,实际上当咱们拥有了这些开发环境了之后,布置仅仅一行简略的docker-compose指令,要实现这个玩意依靠的就俩个文件:docker-compose.ymlDockerfile

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

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

假如想学Java项目的,强烈推荐我的开源项目音讯推送渠道Austin(8K stars) ,能够用作毕业设计,能够用作校招,能够看看出产环境是怎样推送音讯的。开源项目音讯推送渠道austin库房地址:

音讯推送渠道推送下发【邮件】【短信】【微信服务号】【微信小程序】【企业微信】【钉钉】等音讯类型

  • gitee.com/zhongfuchen…
  • github.com/ZhongFuChen…