docker-compose一键部署java开源项目 - Java3y
source link: https://www.cnblogs.com/Java3y/p/17351014.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
这一年干的很多事都是为了降低我的开源项目消息推送平台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.yml和Dockerfile
这两个文件写起来倒是简单,事后看完也觉得简单,但是中途还是遇到了不少的坑的。至于坑嘛,这玩意还是得自己一步一步踩才有意思,我即便写了,你没遇到也不会有啥感受的。
有了现在这个环境了以后,后面等我更新内容,你们就可以直接pull下最新的代码,编译打包一下,用docker-compose启动就完事啦。
如果想学Java项目的,强烈推荐我的开源项目消息推送平台Austin(8K stars) ,可以用作毕业设计,可以用作校招,可以看看生产环境是怎么推送消息的。开源项目消息推送平台austin仓库地址:
消息推送平台🔥推送下发【邮件】【短信】【微信服务号】【微信小程序】【企业微信】【钉钉】等消息类型。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK