Files
ocups-kafka/job_crawler/deploy.sh
李顺东 63cd432a0c docs(job_crawler): add deployment guide and scripts for Linux/Mac/Windows
- Add comprehensive DEPLOY.md with quick start instructions for all platforms
- Add deploy.sh script for Linux/Mac with build, up, down, restart, logs, status, and clean commands
- Add deploy.bat script for Windows with equivalent deployment commands
- Include manual deployment steps using docker and docker-compose
- Document configuration setup and environment variables
- Add production environment recommendations for external Kafka, data persistence, and logging
- Include troubleshooting section for common deployment issues
- Provide health check and service status verification commands
2026-01-15 17:12:51 +08:00

124 lines
2.8 KiB
Bash

#!/bin/bash
# 部署脚本
set -e
# 配置
IMAGE_NAME="job-crawler"
IMAGE_TAG="latest"
CONTAINER_NAME="job-crawler"
REGISTRY="" # 私有仓库地址,如: registry.example.com
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
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 "用法: ./deploy.sh [命令]"
echo ""
echo "命令:"
echo " build 构建镜像"
echo " push 推送镜像到仓库"
echo " up 启动所有服务 (docker-compose)"
echo " down 停止所有服务"
echo " restart 重启应用服务"
echo " logs 查看日志"
echo " status 查看服务状态"
echo " clean 清理无用镜像"
echo " help 显示帮助"
}
# 构建镜像
build() {
log_info "构建镜像: ${IMAGE_NAME}:${IMAGE_TAG}"
docker build -t ${IMAGE_NAME}:${IMAGE_TAG} .
log_info "构建完成"
}
# 推送镜像
push() {
if [ -z "$REGISTRY" ]; then
log_error "请先配置 REGISTRY 变量"
exit 1
fi
FULL_IMAGE="${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}"
log_info "推送镜像: ${FULL_IMAGE}"
docker tag ${IMAGE_NAME}:${IMAGE_TAG} ${FULL_IMAGE}
docker push ${FULL_IMAGE}
log_info "推送完成"
}
# 启动服务
up() {
log_info "启动服务..."
# 检查配置文件
if [ ! -f "config/config.yml" ]; then
log_warn "配置文件不存在,从模板复制"
cp config/config.yml.docker config/config.yml
log_warn "请编辑 config/config.yml 填入账号密码后重新运行"
exit 1
fi
docker-compose up -d
log_info "服务已启动"
log_info "API地址: http://localhost:8000"
log_info "API文档: http://localhost:8000/docs"
}
# 停止服务
down() {
log_info "停止服务..."
docker-compose down
log_info "服务已停止"
}
# 重启应用
restart() {
log_info "重启应用服务..."
docker-compose restart app
log_info "重启完成"
}
# 查看日志
logs() {
docker-compose logs -f --tail=100 app
}
# 查看状态
status() {
echo "=== 容器状态 ==="
docker-compose ps
echo ""
echo "=== 采集状态 ==="
curl -s http://localhost:8000/status 2>/dev/null | python -m json.tool || echo "服务未启动"
}
# 清理
clean() {
log_info "清理无用镜像..."
docker image prune -f
log_info "清理完成"
}
# 主逻辑
case "${1:-help}" in
build) build ;;
push) push ;;
up) up ;;
down) down ;;
restart) restart ;;
logs) logs ;;
status) status ;;
clean) clean ;;
help) show_help ;;
*) show_help ;;
esac