当用微服务安装系统后,面临服务较多,一个一个安装比较麻烦,是否有统一的脚本可以直接执行安装呢?答案是肯定的:

1、首先介绍一下所有安装脚本,如下图

  

spd-volume:是各服务外挂的资料卷

common.sh文件主要封装了一些公共的函数,比较docker的安装与检查

daemon.json与dokcer.service文件是安装docker必须的文件

docker-compose.yml文件是安装各服务的yml语法文件

install.conf是配置文件,如服务的端口ip都可在此配置

install.sh程序运行的主命令

2、将所有的安装脚本复制到要安装的linux服务器上面

新建/home/shell/spd-auto文件夹,将所有要安装的文件复制进去

3、修改配置文件,主要是修改如下的镜像的版本,和服务器的ip

4、修改各服务外挂的资料卷文件

以一个文件为例,主要是修改里面的ip地址和数据库连接地址

5、执行命令安装程序

进入到/home/shell/spd-auto文件夹中,执行如下命

./install.sh

如权限不足执行:chmod +x install.sh

如果不出意外,所有的服务都会安装完成

6、还原数据库

注意数据库的名字要与资料卷中的数据库的名称一致。

7、最后将将所有的服务脚本文件代码贴上,有问题请留言,当然脚本还有很多不足的地方,希望大家提出宝贵的建议。

install.sh

#!/bin/bash
 
set -e
DIR="$(cd "$(dirname "$0")" && pwd)"source $DIR/common.sh
set +o noglob
item=0
#拷资料卷开始if [ ! -d "/home/data" ]then
mkdir /home/data
fi
cp -a ${DIR}/spd-volume /home/data#拷资料卷结束
workdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"cd $workdir
h2 "[Step $item]: checking if docker is installed ..."; let item+=1check_docker
h2 "[Step $item]: checking docker-compose is installed ..."; let item+=1check_dockercompose
h2 "[Step $item]: preparing environment ..."; let item+=1if [ -f "install.conf" ]then cat ${DIR}/install.conf > .env source ${DIR}/install.conf source ${DIR}/.env else error "install.conf file does not exist" exit 1fi
h2 "[Step $item]: loading SPD images ..."; let item+=1if [ -f spd*.tar ]then docker load -i ./spd*.tarelse docker login -u=${SPD_DOCKER_USER} -p=${SPD_DOCKER_PASSWORD} ${SPD_DOCKER_HOST}fiecho ""
if [ -n "$(docker-compose ps -q)" ]then note "stopping existing SPD instance ..." docker-compose down -vfiecho ""
h2 "[Step $item]: starting SPD ..."docker-compose up -d
success $"----SPD has been installed and started successfully.----"

install.conf

# 基础配置
## 安装路径配置及数据文件默认将安装在 ${SPD_BASE} 目录下
SPD_BASE=/home #环境变量
SPD_ENVIRONMENT=Production # Docker配置
SPD_DOCKER_USER=18963948278
SPD_DOCKER_PASSWORD=Zhengwei0101
SPD_DOCKER_HOST=219.139.241.229:8844
## 镜像前缀
SPD_IMAGE_PREFIX=219.139.241.229:8844 ## 安装模式
SPD_INSTALL_MODE=allinone
## MeterSphere 主程序的 HTTP 服务监听端口
SPD_SERVER_PORT=8080 # 数据库配置
## 是否使用外部数据库
SPD_EXTERNAL_MYSQL=false
## 数据库地址
SPD_MYSQL_HOST=192.168.139.129
## 数据库端口
SPD_MYSQL_PORT=3306
## 数据库库名
SPD_MYSQL_DB=spd
## 数据库用户名
SPD_MYSQL_USER=root
## 数据库密码
SPD_MYSQL_PASSWORD=123456 # Redis 配置
## 是否使用外部Redis
SPD_EXTERNAL_REDIS=false
## Redis 端口
SPD_REDIS_PORT=6379
## Redis 密码
SPD_REDIS_PASSWORD=123456
## Redis地址
SPD_REDIS_HOST=192.168.139.129 # Consul 配置
SPD_CONSUL_PORT=8500
SPD_CONSUL_HOST=192.168.139.129 # minio 配置
SPD_MINIO_PORT=9000
SPD_MINIO_HOST=192.168.139.129 # Identity 配置
SPD_IDENTITY_IMAGE=identity-test:34
SPD_IDENTITY_PORT=8086
SPD_IDENTITY_HOST=192.168.139.129 # auth 配置
SPD_AUTH_IMAGE=auth-test:8
SPD_AUTH_PORT=8087
SPD_AUTH_HOST=192.168.139.129 # file 配置
SPD_FILE_IMAGE=file-test:9
SPD_FILE_PORT=8077
SPD_FILE_HOST=192.168.139.129 # web 配置
SPD_WEB_IMAGE=spd-web-develop:98
SPD_WEB_PORT=8088
SPD_WEB_HOST=192.168.139.129 # gateway 配置
SPD_GATEWAY_IMAGE=gateway-test:25
SPD_GATEWAY_PORT=8089
SPD_GATEWAY_HOST=192.168.139.129 # baseinfo 配置
SPD_BASEINFO_IMAGE=base-develop:29
SPD_BASEINFO_PORT=8085
SPD_BASEINFO_HOST=192.168.139.129 # product 配置
SPD_PRODUCT_IMAGE=product-develop:50
SPD_PRODUCT_PORT=8083
SPD_PRODUCT_HOST=192.168.139.129 # stockmanage 配置
SPD_STOCK_IMAGE=stockmanage-develop:25
SPD_STOCK_PORT=8082
SPD_STOCK_HOST=192.168.139.129 # order 配置
SPD_ORDER_IMAGE=order-develop:109
SPD_ORDER_PORT=8084
SPD_ORDER_HOST=192.168.139.129 # interface 配置
SPD_INTERFACE_IMAGE=interface-develop:22
SPD_INTERFACE_PORT=8078
SPD_INTERFACE_HOST=192.168.139.129 # monthlystatement 配置
SPD_MONTHLYSTATEMENT_IMAGE=monthlystatement-develop:22
SPD_MONTHLYSTATEMENT_PORT=8080
SPD_MONTHLYSTATEMENT_HOST=192.168.139.129 # materialpackage 配置
SPD_MATERIALPACKAGE_IMAGE=materialpackage-develop:28
SPD_MATERIALPACKAGE_PORT=8079
SPD_MATERIALPACKAGE_HOST=192.168.139.129 # reagent 配置
SPD_REAGENT_IMAGE=reagent-develop:21
SPD_REAGENT_PORT=8081
SPD_REAGENT_HOST=192.168.139.129 # drug 配置
SPD_DRUG_IMAGE=drug-develop:21
SPD_DRUG_PORT=8077
SPD_DRUG_HOST=192.168.139.129

docker-compose.yaml文件

version: '2.3'
services:
redis:
image: ${SPD_IMAGE_PREFIX}/rancher/redis:latest
container_name: redis
ports:
- ${SPD_REDIS_PORT}:6379
restart: always
cap_drop:
- ALL
cap_add:
- CHOWN
- SETGID
- SETUID
environment:
- TZ=Asia/Shanghai
command: --requirepass ${SPD_REDIS_PASSWORD} --appendonly yes
volumes:
- ${SPD_BASE}/data/redis:/data
networks:
- spd-network
mysql:
image: ${SPD_IMAGE_PREFIX}/rancher/mysql:8.0
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: ${SPD_MYSQL_PASSWORD}
ports:
- ${SPD_MYSQL_PORT}:3306
command: --lower_case_table_names=1
volumes:
- ${SPD_BASE}/data/mysql:/var/lib/mysql
networks:
- spd-network
restart: always
consul:
image: ${SPD_IMAGE_PREFIX}/rancher/consul:latest
container_name: consul
ports:
- ${SPD_CONSUL_PORT}:8500
environment:
- TZ=Asia/Shanghai
command: agent -server -bootstrap -ui -client=0.0.0.0
volumes:
- ${SPD_BASE}/data/consul/data:/consul/data
- ${SPD_BASE}/data/consul/config:/consul/config
networks:
- spd-network
restart: always
minio:
image: ${SPD_IMAGE_PREFIX}/rancher/minio:RELEASE.2021-06-17T00-10-46Z
container_name: minio
ports:
- ${SPD_MINIO_PORT}:9000
command: server /data
environment:
- TZ=Asia/Shanghai
volumes:
- ${SPD_BASE}/data/minio/data:/data
- ${SPD_BASE}/minio/config:/root/.minio
networks:
- spd-network
restart: always
identity:
image: ${SPD_IMAGE_PREFIX}/oms/${SPD_IDENTITY_IMAGE}
container_name: spd-identity
ports:
- ${SPD_IDENTITY_PORT}:8016
environment:
- TZ=Asia/Shanghai
- ASPNETCORE_ENVIRONMENT=${SPD_ENVIRONMENT}
volumes:
- ${SPD_BASE}/data/spd-volume/identity/appsettings.json:/app/appsettings.json:ro
- ${SPD_BASE}/data/spd-volume/identity/appsettings.${SPD_ENVIRONMENT}.json:/app/appsettings.${SPD_ENVIRONMENT}.json:ro
- ${SPD_BASE}/data/spd-volume/identity/Logs:/app/Logs
- /usr/share/zoneinfo/Asia:/usr/share/zoneinfo/Asia:ro
networks:
- spd-network
restart: always
auth:
image: ${SPD_IMAGE_PREFIX}/oms/${SPD_AUTH_IMAGE}
container_name: spd-auth
ports:
- ${SPD_AUTH_PORT}:8015
environment:
- TZ=Asia/Shanghai
- ASPNETCORE_ENVIRONMENT=${SPD_ENVIRONMENT}
volumes:
- ${SPD_BASE}/data/spd-volume/auth/appsettings.json:/app/appsettings.json:ro
- ${SPD_BASE}/data/spd-volume/auth/appsettings.${SPD_ENVIRONMENT}.json:/app/appsettings.${SPD_ENVIRONMENT}.json:ro
- ${SPD_BASE}/data/spd-volume/auth/Logs:/app/Logs
networks:
- spd-network
restart: always
web:
image: ${SPD_IMAGE_PREFIX}/spd/${SPD_WEB_IMAGE}
container_name: spd-web
ports:
- ${SPD_WEB_PORT}:8020
environment:
- TZ=Asia/Shanghai
- ASPNETCORE_ENVIRONMENT=${SPD_ENVIRONMENT}
volumes:
- ${SPD_BASE}/data/spd-volume/web/appsettings.json:/app/appsettings.json:ro
- ${SPD_BASE}/data/spd-volume/web/appsettings.${SPD_ENVIRONMENT}.json:/app/appsettings.${SPD_ENVIRONMENT}.json:ro
- ${SPD_BASE}/data/spd-volume/web/Logs:/app/Logs
- ${SPD_BASE}/data/spd-volume/web/scripts/Config.js:/app/wwwroot/scripts/Config.js
- ${SPD_BASE}/data/spd-volume/web/ActiveReportSource/Custom:/app/ActiveReportSource/Custom
networks:
- spd-network
restart: always
gateway:
image: ${SPD_IMAGE_PREFIX}/oms/${SPD_GATEWAY_IMAGE}
container_name: spd-gateway
ports:
- ${SPD_GATEWAY_PORT}:8083
environment:
- TZ=Asia/Shanghai
- ASPNETCORE_ENVIRONMENT=${SPD_ENVIRONMENT}
volumes:
- ${SPD_BASE}/data/spd-volume/gateway/appsettings.json:/app/appsettings.json:ro
- ${SPD_BASE}/data/spd-volume/gateway/appsettings.${SPD_ENVIRONMENT}.json:/app/appsettings.${SPD_ENVIRONMENT}.json:ro
- ${SPD_BASE}/data/spd-volume/gateway/Logs:/app/Logs
networks:
- spd-network
restart: always
file:
image: ${SPD_IMAGE_PREFIX}/oms/${SPD_FILE_IMAGE}
container_name: file
ports:
- ${SPD_FILE_PORT}:8018
environment:
- TZ=Asia/Shanghai
- ASPNETCORE_ENVIRONMENT=${SPD_ENVIRONMENT}
volumes:
- ${SPD_BASE}/data/spd-volume/file/appsettings.json:/app/appsettings.json:ro
- ${SPD_BASE}/data/spd-volume/file/appsettings.${SPD_ENVIRONMENT}.json:/app/appsettings.${SPD_ENVIRONMENT}.json:ro
- ${SPD_BASE}/data/spd-volume/file/Logs:/app/Logs
networks:
- spd-network
restart: always
baseinfo:
image: ${SPD_IMAGE_PREFIX}/spd/${SPD_BASEINFO_IMAGE}
container_name: spd-baseinfo
ports:
- ${SPD_BASEINFO_PORT}:8011
environment:
- TZ=Asia/Shanghai
- ASPNETCORE_ENVIRONMENT=${SPD_ENVIRONMENT}
volumes:
- ${SPD_BASE}/data/spd-volume/baseinfo/appsettings.json:/app/appsettings.json:ro
- ${SPD_BASE}/data/spd-volume/baseinfo/appsettings.${SPD_ENVIRONMENT}.json:/app/appsettings.${SPD_ENVIRONMENT}.json:ro
- ${SPD_BASE}/data/spd-volume/baseinfo/Logs:/app/Logs
networks:
- spd-network
restart: always
product:
image: ${SPD_IMAGE_PREFIX}/spd/${SPD_PRODUCT_IMAGE}
container_name: spd-product
ports:
- ${SPD_PRODUCT_PORT}:8012
environment:
- TZ=Asia/Shanghai
- ASPNETCORE_ENVIRONMENT=${SPD_ENVIRONMENT}
volumes:
- ${SPD_BASE}/data/spd-volume/product/appsettings.json:/app/appsettings.json:ro
- ${SPD_BASE}/data/spd-volume/product/appsettings.${SPD_ENVIRONMENT}.json:/app/appsettings.${SPD_ENVIRONMENT}.json:ro
- ${SPD_BASE}/data/spd-volume/product/Logs:/app/Logs
networks:
- spd-network
restart: always
stockmanage:
image: ${SPD_IMAGE_PREFIX}/spd/${SPD_STOCK_IMAGE}
container_name: spd-stockmanage
ports:
- ${SPD_STOCK_PORT}:8023
environment:
- TZ=Asia/Shanghai
- ASPNETCORE_ENVIRONMENT=${SPD_ENVIRONMENT}
volumes:
- ${SPD_BASE}/data/spd-volume/stockmanage/appsettings.json:/app/appsettings.json:ro
- ${SPD_BASE}/data/spd-volume/stockmanage/appsettings.${SPD_ENVIRONMENT}.json:/app/appsettings.${SPD_ENVIRONMENT}.json:ro
- ${SPD_BASE}/data/spd-volume/stockmanage/Logs:/app/Logs
networks:
- spd-network
restart: always
order:
image: ${SPD_IMAGE_PREFIX}/spd/${SPD_ORDER_IMAGE}
container_name: spd-order
ports:
- ${SPD_ORDER_PORT}:8025
environment:
- TZ=Asia/Shanghai
- ASPNETCORE_ENVIRONMENT=${SPD_ENVIRONMENT}
volumes:
- ${SPD_BASE}/data/spd-volume/order/appsettings.json:/app/appsettings.json:ro
- ${SPD_BASE}/data/spd-volume/order/appsettings.${SPD_ENVIRONMENT}.json:/app/appsettings.${SPD_ENVIRONMENT}.json:ro
- ${SPD_BASE}/data/spd-volume/order/Logs:/app/Logs
networks:
- spd-network
restart: always
interface:
image: ${SPD_IMAGE_PREFIX}/spd/${SPD_INTERFACE_IMAGE}
container_name: spd-interface
ports:
- ${SPD_INTERFACE_PORT}:8026
environment:
- TZ=Asia/Shanghai
- ASPNETCORE_ENVIRONMENT=${SPD_ENVIRONMENT}
volumes:
- ${SPD_BASE}/data/spd-volume/interface/appsettings.json:/app/appsettings.json:ro
- ${SPD_BASE}/data/spd-volume/interface/appsettings.${SPD_ENVIRONMENT}.json:/app/appsettings.${SPD_ENVIRONMENT}.json:ro
- ${SPD_BASE}/data/spd-volume/interface/Logs:/app/Logs
networks:
- spd-network
restart: always
monthlystatement:
image: ${SPD_IMAGE_PREFIX}/spd/${SPD_MONTHLYSTATEMENT_IMAGE}
container_name: spd-monthlystatement
ports:
- ${SPD_MONTHLYSTATEMENT_PORT}:8024
environment:
- TZ=Asia/Shanghai
- ASPNETCORE_ENVIRONMENT=${SPD_ENVIRONMENT}
volumes:
- ${SPD_BASE}/data/spd-volume/monthlystatement/appsettings.json:/app/appsettings.json:ro
- ${SPD_BASE}/data/spd-volume/monthlystatement/appsettings.${SPD_ENVIRONMENT}.json:/app/appsettings.${SPD_ENVIRONMENT}.json:ro
- ${SPD_BASE}/data/spd-volume/monthlystatement/Logs:/app/Logs
networks:
- spd-network
restart: always
materialpackage:
image: ${SPD_IMAGE_PREFIX}/spd/${SPD_MATERIALPACKAGE_IMAGE}
container_name: spd-materialpackage
ports:
- ${SPD_MATERIALPACKAGE_PORT}:8027
environment:
- TZ=Asia/Shanghai
- ASPNETCORE_ENVIRONMENT=${SPD_ENVIRONMENT}
volumes:
- ${SPD_BASE}/data/spd-volume/materialpackage/appsettings.json:/app/appsettings.json:ro
- ${SPD_BASE}/data/spd-volume/materialpackage/appsettings.${SPD_ENVIRONMENT}.json:/app/appsettings.${SPD_ENVIRONMENT}.json:ro
- ${SPD_BASE}/data/spd-volume/materialpackage/Logs:/app/Logs
networks:
- spd-network
restart: always
reagent:
image: ${SPD_IMAGE_PREFIX}/spd/${SPD_REAGENT_IMAGE}
container_name: spd-reagent
ports:
- ${SPD_REAGENT_PORT}:8029
environment:
- TZ=Asia/Shanghai
- ASPNETCORE_ENVIRONMENT=${SPD_ENVIRONMENT}
volumes:
- ${SPD_BASE}/data/spd-volume/reagent/appsettings.json:/app/appsettings.json:ro
- ${SPD_BASE}/data/spd-volume/reagent/appsettings.${SPD_ENVIRONMENT}.json:/app/appsettings.${SPD_ENVIRONMENT}.json:ro
- ${SPD_BASE}/data/spd-volume/reagent/Logs:/app/Logs
networks:
- spd-network
restart: always networks:
spd-network:
external: false

 daemon.json

{
"insecure-registries": [
"219.139.241.229:8844"
],
"registry-mirrors": [
"http://hub-mirror.c.163.com",
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn"
],
"log-driver":"json-file",
"log-opts":{"max-size":"500m","max-file":"3"}
}

common.sh

#!/bin/bash
#docker version: 17.06.0+
#docker-compose version: 1.18.0+ DIR="$(cd "$(dirname "$0")" && pwd)" set +e
set -o noglob #
# Set Colors
# bold=$(tput bold)
underline=$(tput sgr 0 1)
reset=$(tput sgr0) red=$(tput setaf 1)
green=$(tput setaf 76)
white=$(tput setaf 7)
tan=$(tput setaf 202)
blue=$(tput setaf 25) #
# Headers and Logging
# underline() { printf "${underline}${bold}%s${reset}\n" "$@"
}
h1() { printf "\n${underline}${bold}${blue}%s${reset}\n" "$@"
}
h2() { printf "\n${underline}${bold}${white}%s${reset}\n" "$@"
}
debug() { printf "${white}%s${reset}\n" "$@"
}
info() { printf "${white}➜ %s${reset}\n" "$@"
}
success() { printf "${green} %s${reset}\n" "$@"
}
error() { printf "${red} %s${reset}\n" "$@"
}
warn() { printf "${tan}➜ %s${reset}\n" "$@"
}
bold() { printf "${bold}%s${reset}\n" "$@"
}
note() { printf "\n${underline}${bold}${blue}Note:${reset} ${blue}%s${reset}\n" "$@"
} set -e function check_docker {
if ! docker --version &> /dev/null
then
install_docker
# error "Need to install docker(17.06.0+) first and run this script again."
# exit 1
fi # docker has been installed and check its version
if [[ $(docker --version) =~ (([0-9]+)\.([0-9]+)([\.0-9]*)) ]]
then
docker_version=${BASH_REMATCH[1]}
docker_version_part1=${BASH_REMATCH[2]}
docker_version_part2=${BASH_REMATCH[3]} note "docker version: $docker_version"
# the version of docker does not meet the requirement
if [ "$docker_version_part1" -lt 17 ] || ([ "$docker_version_part1" -eq 17 ] && [ "$docker_version_part2" -lt 6 ])
then
error "Need to upgrade docker package to 17.06.0+."
fi
else
error "Failed to parse docker version."
exit 1
fi
} function check_dockercompose {
if ! docker-compose --version &> /dev/null
then
install_docker_compose
# error "Need to install docker-compose(1.18.0+) by yourself first and run this script again."
# exit 1
fi # docker-compose has been installed, check its version
if [[ $(docker-compose --version) =~ (([0-9]+)\.([0-9]+)([\.0-9]*)) ]]
then
docker_compose_version=${BASH_REMATCH[1]}
docker_compose_version_part1=${BASH_REMATCH[2]}
docker_compose_version_part2=${BASH_REMATCH[3]} note "docker-compose version: $docker_compose_version"
# the version of docker-compose does not meet the requirement
if [ "$docker_compose_version_part1" -lt 1 ] || ([ "$docker_compose_version_part1" -eq 1 ] && [ "$docker_compose_version_part2" -lt 18 ])
then
error "Need to upgrade docker-compose package to 1.18.0+."
exit 1
fi
else
error "Failed to parse docker-compose version."
exit 1
fi
} # install docker
function install_docker {
if [ ! -d "/etc/docker/" ];
then
mkdir /etc/docker
else
echo "Folder already exists"
fi
cp daemon.json /etc/docker/ if [[ -d docker ]]; then
info "... offline install docker"
cp docker/* /usr/bin/
cp docker.service /usr/lib/systemd/system/
chmod +x /usr/bin/docker*
chmod 754 /usr/lib/systemd/system/docker.service
else
info "... online install docker"
curl -fsSL https://get.docker.com -o get-docker.sh 2>&1 | tee -a ${DIR}/install.log
sudo sh get-docker.sh --mirror Aliyun 2>&1 | tee -a ${DIR}/install.log
fi if [ ! -f "/usr/lib/systemd/system/docker.service" ];
then
cp docker.service /usr/lib/systemd/system/
else
echo "file already exists"
fi info "... start docker"
systemctl daemon-reload && systemctl start docker 2>&1 | tee -a ${DIR}/install.log systemctl enable docker docker ps 1>/dev/null 2>/dev/null
if [ $? != 0 ];then
error "Docker 未正常启动,请先安装并启动 Docker 服务后再次执行本脚本"
exit 1
fi
} function install_docker_compose {
if [[ -d docker ]]; then
info "... offline docker-compose"
cp docker/bin/docker-compose /usr/bin/
chmod +x /usr/bin/docker-compose
else
info "... online docker-compose"
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.2.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose 2>&1 | tee -a ${DIR}/install.log
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
fi docker-compose version 1>/dev/null 2>/dev/null
if [ $? != 0 ];then
error "docker-compose 未正常安装,请先安装 docker-compose 后再次执行本脚本"
exit 1
fi
}

常见问题:

解决方法一(推荐):

安装docker-compose

1、下载安装包:

官网:https://github.com/docker/compose/releases

百度云下载:

链接:https://pan.baidu.com/s/10In9P2lSLuYL3M7dVhARhQ

提取码:bax3

2、移动文件到指定目录并改名

mv docker-compose-linux-x86_64
/usr/local/bin/docker-compose

3、添加可执行权限

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


4、命令测试是否安装成功

docker-compose -v 

解决方法二:

1、无法创建符号链接"/usr/bin/docker-compose": 文件已存在

下载docker-compose:curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

加个执行权限:chmod +x /usr/local/bin/docker-compose

微服务用yml安装系统(第一版)的更多相关文章

  1. 微服务之分布式跟踪系统(springboot+zipkin+mysql)

    通过上一节<微服务之分布式跟踪系统(springboot+zipkin)>我们简单熟悉了zipkin的使用,但是收集的数据都保存在内存中重启后数据丢失,不过zipkin的Storage除了 ...

  2. DHCP服务+PXE自动安装系统

    DHCP服务+PXE自动安装系统 DHCP安装 安装DHCP服务器 yum install dhcp -y 安装完dhcp默认无法启动,需要编辑配置文件设置分配地址范围等相关信息,服务器自身IP地址要 ...

  3. 微服务之分布式跟踪系统(springboot+pinpoint)

    这篇文章介绍一下在微服务(springboot开发)的项目中使用pintpoint监控的过程及效果展示. 背景 随着项目微服务的进行,微服务数量逐渐增加,服务间的调用也越来越复杂,我们急切需要一个AP ...

  4. 微服务实战(三):落地微服务架构到直销系统(构建基于RabbitMq的消息总线)

    从前面文章可以看出,消息总线是EDA(事件驱动架构)与微服务架构的核心部件,没有消息总线,就无法很好的实现微服务之间的解耦与通讯.通常我们可以利用现有成熟的消息代理产品或云平台提供的消息服务来构建自己 ...

  5. zipkin+elk微服务日志收集分析系统

    docker安装elk日志分析系统 在win10上安装docker环境 tip:win7/8 win7.win8 系统 win7.win8 等需要利用 docker toolbox 来安装,国内可以使 ...

  6. Java进阶专题(二十二) 从零开始搭建一个微服务架构系统 (上)

    前言 "微服务"一词源于 Martin Fowler的名为 Microservices的,博文,可以在他的官方博客上找到http:/ /martinfowler . com/art ...

  7. Java微服务(一):dubbo-admin控制台的使用

    1.环境准备 使用CentOS7+Docker+Zookeeper3.4.10搭建dubbo微服务 1.1.安装docker容器 (1).uname -r:docker要求CentOS的内核版本高于3 ...

  8. 字节跳动内部微服务架构-Docker实战学习笔记分享 真香

    前言 基于 Spring Cloud 的微服务设计和开发,已经越来越多地得到了更多企业的推广和应用,而 Spring Cloud 社区也在不断的迅速发展壮大之中,近几年时间,Spring Cloud ...

  9. 《基于.NET Core构建微服务》系列文章(更新至第6篇,最新第7篇,已发布主页候选区)

    原文:Building Microservices On .NET Core – Part 1 The Plan 时间:2019年1月14日 作者:Wojciech Suwała, Head Arch ...

  10. SpringCloud微服务实战——搭建企业级开发框架(四十五):【微服务监控告警实现方式二】使用Actuator(Micrometer)+Prometheus+Grafana实现完整的微服务监控

      无论是使用SpringBootAdmin还是使用Prometheus+Grafana都离不开SpringBoot提供的核心组件Actuator.提到Actuator,又不得不提Micrometer ...

随机推荐

  1. JPEG/Exif/TIFF格式解读(4):win10照片旋转win7不识别

    xif元数据根据不同的内容分布在五个不同的IFD中. IFD0中的数据是由TIFF定义的基本图像数据,其中有些与照片无关,所以Exif只实现其中一小部分.这部份数据在Photoshop中称为TIFF元 ...

  2. 还在用 Excel 和 SQL?火山引擎 VeDI 这款产品帮你更快处理数据

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群 对大多数职场打工人来说,看数据.用数据一直是项有"门槛"的工作. 特别是在企业业务快速发展的背景下,为 ...

  3. Mac问题记录

    1. "App" can't be opened because Apple cannot check it for malicious software. 一般来说,在Syste ...

  4. pyshorteners 长短链接转换

    import requests import pyshorteners as psn def long_to_short(url): url = psn.Shortener().chilpit.sho ...

  5. Linux CentOS 8 安装DHCP服务

    DHCP 如果虚拟机没有 /etc/dhcp/dhcpd.conf 文件,这可能是因为 DHCP 服务器软件包尚未安装,或者安装后配置文件未创建. 要创建 DHCP 服务器配置文件 dhcpd.con ...

  6. Codeforce 318A - Even Odds(数学水题)

    Being a nonconformist, Volodya is displeased with the current state of things, particularly with the ...

  7. Codeforces Round #623 (Div. 2) A~D题,D题multiset使用

    比赛链接:Here 1315A. Dead Pixel 签到题, 比较四个值 max(max(x, a - 1 - x) * b, a * max(y, b - 1 - y)) 1315B. Home ...

  8. 在vue项目中使用momentjs获取今日、昨日、本周、本月、上月、本年、上年等日期,时间比较计算

    https://blog.csdn.net/qq_15058285/article/details/119925056

  9. map三层循环遍历,操作数据

    let tempArr = this.oldCityList.map(item => { return { value: item.code, text: item.name, type: it ...

  10. python之排序的几种方法

    一.通过sort()可以快速实现数组的排序: 1 a=[2,3,1] 2 a.sort() 3 print(a) 打印返回结果: 二.如果不知道有sort()函数或者一些特殊场景需要排序时,如果解决呢 ...