refactor(consul): 更新服务检查地址为远程IP并重构部署脚本

将Consul配置中的服务检查地址从容器名改为远程IP地址,以支持跨服务器健康检查
删除旧的部署脚本和配置文件,新增分离的远程和本地部署脚本
重构docker-compose配置为远程和本地两个版本,优化服务部署结构
This commit is contained in:
fanfpy 2025-07-21 17:35:36 +08:00
parent 30420cd612
commit 92029b89e9
12 changed files with 141 additions and 121 deletions

View File

@ -2,7 +2,7 @@
"service": {
"address": "data-service",
"check": {
"http": "http://ari-data-service:8000/api/public/stock_bid_ask_em?symbol=000001",
"http": "http://10.195.102.127:8000/api/public/stock_bid_ask_em?symbol=000001",
"interval": "10s",
"timeout": "5s"
},

View File

@ -2,7 +2,7 @@
"service": {
"address": "emotion-service",
"check": {
"http": "http://emotion-service:8002/health",
"http": "http://10.195.102.127:8002/health",
"interval": "10s",
"timeout": "5s"
},

View File

@ -2,7 +2,7 @@
"service": {
"address": "frontend",
"check": {
"http": "http://frontend:80/",
"http": "http://10.195.102.127:8080/",
"interval": "10s",
"timeout": "5s"
},

View File

@ -2,7 +2,7 @@
"service": {
"address": "quant-service",
"check": {
"http": "http://quant-service:8001/health",
"http": "http://10.195.102.127:8001/health",
"interval": "10s",
"timeout": "5s"
},

View File

@ -2,7 +2,7 @@
"service": {
"address": "recommend-service",
"check": {
"http": "http://recommend-service:8003/health",
"http": "http://10.195.102.127:8003/health",
"interval": "10s",
"timeout": "5s"
},

View File

@ -2,7 +2,7 @@
"service": {
"address": "user-service",
"check": {
"http": "http://user-service:8004/health",
"http": "http://10.195.102.127:8004/health",
"interval": "10s",
"timeout": "5s"
},

View File

@ -1,20 +0,0 @@
{
"service": {
"name": "whoami",
"tags": [
"traefik.enable=true",
"traefik.http.routers.whoami.entrypoints=web",
"traefik.http.routers.whoami.rule=Path(\"/whoami\")",
"traefik.http.services.whoami.loadbalancer.server.port=80"
],
"address": "whoami",
"port": 80,
"checks": [
{
"http": "http://whoami:80/",
"interval": "10s",
"timeout": "2s"
}
]
}
}

View File

@ -5,40 +5,6 @@ networks:
driver: bridge
services:
consul:
image: consul:1.15
container_name: ari-consul
restart: always
ports:
- "8500:8500" # Consul Web UI
- "8600:8600/udp" # DNS服务
volumes:
- ./consul/config/${ENV_CONFIG_DIR}:/consul/config
command: "consul agent -server -bootstrap-expect=1 ${CONSUL_DEV_MODE} -config-dir=/consul/config -client=0.0.0.0"
networks:
- microservice-network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8500/v1/status/leader"]
interval: 10s
timeout: 5s
retries: 3
traefik:
image: traefik:v2.11
container_name: ari-traefik
command:
- --configFile=/etc/traefik/traefik.yml
ports:
- "80:80"
- "443:443"
- "8080:8080" # Traefik dashboard
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./traefik/config/${TRAEFIK_CONFIG_DIR}/traefik.yml:/etc/traefik/traefik.yml
- ./traefik/certs:/etc/traefik/certs
networks:
- microservice-network
data-service:
image: crpi-amr0dt5e5pywqwaf.cn-hangzhou.personal.cr.aliyuncs.com/testrrr/data-service:latest
container_name: ari-data-service
@ -54,11 +20,10 @@ services:
image: crpi-amr0dt5e5pywqwaf.cn-hangzhou.personal.cr.aliyuncs.com/testrrr/quant-service:latest
container_name: ari-quant-service
restart: always
depends_on:
consul:
condition: service_healthy
expose:
- "8001"
ports:
- "8001:8001"
networks:
- microservice-network
environment:
@ -68,11 +33,10 @@ services:
image: crpi-amr0dt5e5pywqwaf.cn-hangzhou.personal.cr.aliyuncs.com/testrrr/emotion-service:latest
container_name: ari-emotion-service
restart: always
depends_on:
consul:
condition: service_healthy
expose:
- "8002"
ports:
- "8002:8002"
networks:
- microservice-network
environment:
@ -82,11 +46,10 @@ services:
image: crpi-amr0dt5e5pywqwaf.cn-hangzhou.personal.cr.aliyuncs.com/testrrr/recommend-service:latest
container_name: ari-recommend-service
restart: always
depends_on:
consul:
condition: service_healthy
expose:
- "8003"
ports:
- "8003:8003"
networks:
- microservice-network
environment:
@ -96,11 +59,10 @@ services:
image: crpi-amr0dt5e5pywqwaf.cn-hangzhou.personal.cr.aliyuncs.com/testrrr/user-service:latest
container_name: ari-user-service
restart: always
depends_on:
consul:
condition: service_healthy
expose:
- "8004"
ports:
- "8004:8004"
networks:
- microservice-network
environment:
@ -119,13 +81,9 @@ services:
- user-service
expose:
- "80"
ports:
- "8080:8080"
networks:
- microservice-network
environment:
- SERVICE_NAME=frontend
whoami:
image: traefik/whoami
container_name: whoami
networks:
- microservice-network
- SERVICE_NAME=frontend

40
docker-compose.remote.yml Normal file
View File

@ -0,0 +1,40 @@
version: '3.8'
networks:
microservice-network:
driver: bridge
services:
consul:
image: consul:1.15
container_name: ari-consul
restart: always
ports:
- "8500:8500" # Consul Web UI
- "8600:8600/udp" # DNS服务
volumes:
- ./consul/config/${ENV_CONFIG_DIR}:/consul/config
command: "consul agent -server -bootstrap-expect=1 ${CONSUL_DEV_MODE} -config-dir=/consul/config -client=0.0.0.0"
networks:
- microservice-network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8500/v1/status/leader"]
interval: 10s
timeout: 5s
retries: 3
traefik:
image: traefik:v2.11
container_name: ari-traefik
command:
- --configFile=/etc/traefik/traefik.yml
ports:
- "80:80"
- "443:443"
- "8080:8080" # Traefik dashboard
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./traefik/config/${TRAEFIK_CONFIG_DIR}/traefik.yml:/etc/traefik/traefik.yml
- ./traefik/certs:/etc/traefik/certs
networks:
- microservice-network

43
run-local.sh Normal file
View File

@ -0,0 +1,43 @@
#!/bin/bash
set -e
# 本地服务器启动脚本:部署业务服务
# 配置参数
REGISTRY="crpi-amr0dt5e5pywqwaf.cn-hangzhou.personal.cr.aliyuncs.com"
VERSION="latest"
COMPOSE_FILE=docker-compose.local.yml
USERNAME="2324802641zhengniannian@gmail.com"
# 远程Consul地址请替换为实际远程服务器IP
REMOTE_CONSUL_IP="your_remote_consul_server_ip"
# 检查Docker和Docker Compose
if ! command -v docker &> /dev/null; then
echo "错误: Docker未安装"
exit 1
fi
if ! docker compose version &> /dev/null; then
echo "错误: Docker Compose未安装"
exit 1
fi
# 登录Docker仓库
echo "登录阿里云Docker仓库..."
docker login --username=$USERNAME $REGISTRY
if [ $? -ne 0 ]; then
echo "错误: 仓库登录失败"
exit 1
fi
# 启动本地业务服务不包含Consul和Traefik
echo "正在启动本地业务服务..."
VERSION=$VERSION CONSUL_HTTP_ADDR="$REMOTE_CONSUL_IP:8500" docker compose -f $COMPOSE_FILE up -d data-service emotion-service frontend quant-service recommend-service user-service
# 显示状态
echo "\n本地服务状态:"
docker compose -f $COMPOSE_FILE ps data-service emotion-service frontend quant-service recommend-service user-service
echo "\n查看日志命令: docker compose -f $COMPOSE_FILE logs -f"
echo "停止服务命令: docker compose -f $COMPOSE_FILE down"
echo "\n本地业务服务启动完成"
exit 0

41
run-remote.sh Normal file
View File

@ -0,0 +1,41 @@
#!/bin/bash
set -e
# 远程服务器启动脚本部署Consul和Traefik
# 配置参数
REGISTRY="crpi-amr0dt5e5pywqwaf.cn-hangzhou.personal.cr.aliyuncs.com"
VERSION="latest"
COMPOSE_FILE="docker-compose.remote.yml"
USERNAME="2324802641zhengniannian@gmail.com"
# 检查Docker和Docker Compose
if ! command -v docker &> /dev/null; then
echo "错误: Docker未安装"
exit 1
fi
if ! docker compose version &> /dev/null; then
echo "错误: Docker Compose未安装"
exit 1
fi
# 登录Docker仓库
echo "登录阿里云Docker仓库..."
docker login --username=$USERNAME $REGISTRY
if [ $? -ne 0 ]; then
echo "错误: 仓库登录失败"
exit 1
fi
# 启动远程服务Consul和Traefik
echo "正在启动远程服务..."
VERSION=$VERSION docker compose -f $COMPOSE_FILE up -d consul traefik
# 显示状态
echo "\n远程服务状态:"
docker compose -f $COMPOSE_FILE ps consul traefik
echo "\n查看日志命令: docker compose -f $COMPOSE_FILE logs -f consul traefik"
echo "停止服务命令: docker compose -f $COMPOSE_FILE down consul traefik"
echo "\n远程服务启动完成"
exit 0

View File

@ -1,42 +0,0 @@
#!/bin/bash
set -e
# 配置参数
REGISTRY="crpi-amr0dt5e5pywqwaf.cn-hangzhou.personal.cr.aliyuncs.com"
VERSION="latest"
COMPOSE_FILE="docker-compose.aliyun.yml"
USERNAME="2324802641zhengniannian@gmail.com"
# 检查Docker是否安装
if ! command -v docker &> /dev/null; then
echo "错误: Docker未安装请先安装Docker"
exit 1
fi
# 检查Docker Compose是否安装使用docker compose子命令
if ! docker compose version &> /dev/null; then
echo "错误: Docker Compose未安装请先安装Docker Compose"
exit 1
fi
# 登录阿里云Docker仓库
echo "登录阿里云Docker仓库..."
docker login --username=$USERNAME $REGISTRY
if [ $? -ne 0 ]; then
echo "错误: 仓库登录失败,请检查用户名和密码"
exit 1
fi
# 启动服务
echo "正在启动服务 (版本: $VERSION)..."
VERSION=$VERSION docker compose -f $COMPOSE_FILE up -d
# 检查服务状态
echo "\n服务状态:"
docker compose -f $COMPOSE_FILE ps
# 显示日志命令提示
echo "\n查看服务日志命令: docker compose -f $COMPOSE_FILE logs -f"
echo "停止服务命令: docker compose -f $COMPOSE_FILE down"
echo "\n服务启动完成"
exit 0