- 添加所有后端服务的application-docker.yml配置文件 - 添加前端fund-admin和fund-mobile的Dockerfile和nginx配置 - 更新docker-compose.yml添加前端服务 - 添加.dockerignore优化构建 - 添加deploy.sh一键部署脚本
267 lines
5.4 KiB
Bash
Executable File
267 lines
5.4 KiB
Bash
Executable File
#!/bin/bash
|
||
# 资金服务平台 - Docker 部署脚本
|
||
|
||
set -e
|
||
|
||
# 颜色定义
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# 打印带颜色的消息
|
||
log_info() {
|
||
echo -e "${GREEN}[INFO]${NC} $1"
|
||
}
|
||
|
||
log_warn() {
|
||
echo -e "${YELLOW}[WARN]${NC} $1"
|
||
}
|
||
|
||
log_error() {
|
||
echo -e "${RED}[ERROR]${NC} $1"
|
||
}
|
||
|
||
# 显示帮助
|
||
show_help() {
|
||
echo "资金服务平台 Docker 部署脚本"
|
||
echo ""
|
||
echo "用法: $0 <命令> [选项]"
|
||
echo ""
|
||
echo "命令:"
|
||
echo " start 启动所有服务"
|
||
echo " stop 停止所有服务"
|
||
echo " restart 重启所有服务"
|
||
echo " build 构建所有镜像"
|
||
echo " rebuild 重新构建所有镜像(不使用缓存)"
|
||
echo " logs 查看服务日志"
|
||
echo " status 查看服务状态"
|
||
echo " clean 清理未使用的镜像和容器"
|
||
echo " init 初始化环境(首次部署)"
|
||
echo ""
|
||
echo "选项:"
|
||
echo " --service <name> 指定服务名称"
|
||
echo " --no-cache 构建时不使用缓存"
|
||
echo ""
|
||
echo "示例:"
|
||
echo " $0 start # 启动所有服务"
|
||
echo " $0 build --no-cache # 重新构建所有镜像"
|
||
echo " $0 logs --service fund-sys # 查看系统服务日志"
|
||
}
|
||
|
||
# 检查 Docker 环境
|
||
check_docker() {
|
||
if ! command -v docker &> /dev/null; then
|
||
log_error "Docker 未安装,请先安装 Docker"
|
||
exit 1
|
||
fi
|
||
|
||
if ! docker info &> /dev/null; then
|
||
log_error "Docker 未运行,请先启动 Docker"
|
||
exit 1
|
||
fi
|
||
|
||
if ! command -v docker-compose &> /dev/null && ! docker compose version &> /dev/null; then
|
||
log_error "Docker Compose 未安装"
|
||
exit 1
|
||
fi
|
||
|
||
log_info "Docker 环境检查通过"
|
||
}
|
||
|
||
# 使用 docker-compose 命令(兼容 v1 和 v2)
|
||
compose_cmd() {
|
||
if docker compose version &> /dev/null; then
|
||
docker compose "$@"
|
||
else
|
||
docker-compose "$@"
|
||
fi
|
||
}
|
||
|
||
# 初始化环境
|
||
init_env() {
|
||
log_info "初始化部署环境..."
|
||
|
||
# 复制环境配置
|
||
if [ ! -f .env ]; then
|
||
cp docker/.env .env
|
||
log_info "已创建 .env 文件"
|
||
else
|
||
log_warn ".env 文件已存在,跳过"
|
||
fi
|
||
|
||
# 创建必要的目录
|
||
mkdir -p docker/grafana/dashboards
|
||
mkdir -p docker/grafana/provisioning/datasources
|
||
mkdir -p docker/grafana/provisioning/dashboards
|
||
mkdir -p docker/prometheus/rules
|
||
|
||
# 设置权限
|
||
chmod +x deploy.sh 2>/dev/null || true
|
||
|
||
log_info "环境初始化完成"
|
||
}
|
||
|
||
# 构建镜像
|
||
build_images() {
|
||
local no_cache=""
|
||
local service=""
|
||
|
||
while [[ $# -gt 0 ]]; do
|
||
case $1 in
|
||
--no-cache)
|
||
no_cache="--no-cache"
|
||
shift
|
||
;;
|
||
--service)
|
||
service="$2"
|
||
shift 2
|
||
;;
|
||
*)
|
||
shift
|
||
;;
|
||
esac
|
||
done
|
||
|
||
log_info "开始构建 Docker 镜像..."
|
||
|
||
if [ -n "$service" ]; then
|
||
compose_cmd build $no_cache "$service"
|
||
else
|
||
compose_cmd build $no_cache
|
||
fi
|
||
|
||
log_info "镜像构建完成"
|
||
}
|
||
|
||
# 启动服务
|
||
start_services() {
|
||
log_info "启动服务..."
|
||
compose_cmd up -d
|
||
|
||
log_info "等待服务启动..."
|
||
sleep 10
|
||
|
||
log_info "服务状态:"
|
||
compose_cmd ps
|
||
}
|
||
|
||
# 停止服务
|
||
stop_services() {
|
||
log_info "停止服务..."
|
||
compose_cmd down
|
||
log_info "服务已停止"
|
||
}
|
||
|
||
# 重启服务
|
||
restart_services() {
|
||
stop_services
|
||
sleep 3
|
||
start_services
|
||
}
|
||
|
||
# 查看日志
|
||
view_logs() {
|
||
local service=""
|
||
|
||
while [[ $# -gt 0 ]]; do
|
||
case $1 in
|
||
--service)
|
||
service="$2"
|
||
shift 2
|
||
;;
|
||
*)
|
||
shift
|
||
;;
|
||
esac
|
||
done
|
||
|
||
if [ -n "$service" ]; then
|
||
compose_cmd logs -f "$service"
|
||
else
|
||
compose_cmd logs -f
|
||
fi
|
||
}
|
||
|
||
# 查看状态
|
||
view_status() {
|
||
log_info "服务状态:"
|
||
compose_cmd ps
|
||
|
||
echo ""
|
||
log_info "健康检查:"
|
||
compose_cmd ps --format "table {{.Name}}\t{{.Status}}"
|
||
}
|
||
|
||
# 清理
|
||
clean_up() {
|
||
log_info "清理未使用的资源..."
|
||
|
||
# 停止并删除所有容器
|
||
compose_cmd down -v --remove-orphans
|
||
|
||
# 删除悬空镜像
|
||
docker image prune -f
|
||
|
||
# 删除未使用的网络
|
||
docker network prune -f
|
||
|
||
log_info "清理完成"
|
||
}
|
||
|
||
# 主函数
|
||
main() {
|
||
if [ $# -eq 0 ]; then
|
||
show_help
|
||
exit 0
|
||
fi
|
||
|
||
check_docker
|
||
|
||
case $1 in
|
||
start)
|
||
shift
|
||
start_services "$@"
|
||
;;
|
||
stop)
|
||
shift
|
||
stop_services "$@"
|
||
;;
|
||
restart)
|
||
shift
|
||
restart_services "$@"
|
||
;;
|
||
build)
|
||
shift
|
||
build_images "$@"
|
||
;;
|
||
rebuild)
|
||
shift
|
||
build_images --no-cache "$@"
|
||
;;
|
||
logs)
|
||
shift
|
||
view_logs "$@"
|
||
;;
|
||
status)
|
||
view_status
|
||
;;
|
||
clean)
|
||
clean_up
|
||
;;
|
||
init)
|
||
init_env
|
||
;;
|
||
-h|--help)
|
||
show_help
|
||
;;
|
||
*)
|
||
log_error "未知命令: $1"
|
||
show_help
|
||
exit 1
|
||
;;
|
||
esac
|
||
}
|
||
|
||
main "$@"
|