241 lines
5.4 KiB
Bash
Executable File
241 lines
5.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# 数字档案系统部署脚本
|
|
set -e
|
|
|
|
# 颜色定义
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# 项目信息
|
|
PROJECT_NAME="digital-archive"
|
|
VERSION="latest"
|
|
|
|
# 检查参数
|
|
if [ $# -eq 0 ]; then
|
|
echo -e "${RED}用法: $0 <部署目录>${NC}"
|
|
echo -e "${YELLOW}示例: $0 /opt/digital-archive${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
DEPLOY_DIR=$1
|
|
|
|
# 检查Docker是否安装
|
|
if ! command -v docker &> /dev/null; then
|
|
echo -e "${RED}错误: Docker未安装${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# 检查Docker Compose是否安装
|
|
if ! command -v docker-compose &> /dev/null; then
|
|
echo -e "${RED}错误: Docker Compose未安装${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "${GREEN}开始部署数字档案系统到 ${DEPLOY_DIR}...${NC}"
|
|
|
|
# 检查镜像是否存在
|
|
if ! docker images | grep -q ${PROJECT_NAME}; then
|
|
echo -e "${RED}错误: 镜像 ${PROJECT_NAME}:${VERSION} 不存在,请先运行 ./build.sh${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# 创建部署目录
|
|
echo -e "${YELLOW}创建部署目录...${NC}"
|
|
mkdir -p ${DEPLOY_DIR}/{data/{upload,temp,unzip,images,reports,database,redis,elasticsearch},logs,nginx}
|
|
|
|
# 复制配置文件
|
|
echo -e "${YELLOW}复制配置文件...${NC}"
|
|
cp docker-compose.simple.yml ${DEPLOY_DIR}/docker-compose.yml
|
|
|
|
# 创建环境配置文件
|
|
cat > ${DEPLOY_DIR}/.env << EOF
|
|
# 数字档案系统环境配置
|
|
COMPOSE_PROJECT_NAME=digital-archive
|
|
|
|
# 服务配置
|
|
SERVER_PORT=9081
|
|
SERVER_CONTEXT_PATH=/point-strategy
|
|
|
|
# 数据库配置
|
|
DB_HOST=database
|
|
DB_PORT=54321
|
|
DB_NAME=enterprise_digital_archives
|
|
DB_USERNAME=system
|
|
DB_PASSWORD=12345678ab
|
|
|
|
# Redis配置
|
|
REDIS_HOST=redis
|
|
REDIS_PORT=6379
|
|
REDIS_PASSWORD=Abc123456
|
|
|
|
# OCR配置
|
|
TESS_PATH=/usr/bin/tesseract
|
|
|
|
# 其他配置
|
|
SWAGGER_SHOW=false
|
|
LOG_ROOT_LEVEL=info
|
|
LOG_APP_LEVEL=info
|
|
JAVA_OPTS=-Xmx2g -Xms1g -XX:+UseG1GC -XX:MaxGCPauseMillis=200
|
|
EOF
|
|
|
|
# 创建nginx配置目录和基础配置
|
|
mkdir -p ${DEPLOY_DIR}/nginx/conf.d
|
|
cat > ${DEPLOY_DIR}/nginx/nginx.conf << 'EOF'
|
|
events {
|
|
worker_connections 1024;
|
|
}
|
|
|
|
http {
|
|
upstream app {
|
|
server app:9081;
|
|
}
|
|
|
|
server {
|
|
listen 80;
|
|
server_name localhost;
|
|
|
|
location / {
|
|
proxy_pass http://app;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
}
|
|
}
|
|
}
|
|
EOF
|
|
|
|
# 设置目录权限
|
|
echo -e "${YELLOW}设置目录权限...${NC}"
|
|
chmod -R 755 ${DEPLOY_DIR}/data/
|
|
chmod -R 755 ${DEPLOY_DIR}/logs/
|
|
chmod 644 ${DEPLOY_DIR}/.env
|
|
chmod 644 ${DEPLOY_DIR}/docker-compose.yml
|
|
|
|
# 创建启动脚本
|
|
cat > ${DEPLOY_DIR}/start.sh << 'EOF'
|
|
#!/bin/bash
|
|
# 启动数字档案系统
|
|
echo "启动数字档案系统..."
|
|
docker-compose up -d
|
|
|
|
echo "等待服务启动..."
|
|
sleep 30
|
|
|
|
echo "检查服务状态..."
|
|
docker-compose ps
|
|
|
|
echo "查看应用日志..."
|
|
docker-compose logs -f app
|
|
EOF
|
|
|
|
# 创建停止脚本
|
|
cat > ${DEPLOY_DIR}/stop.sh << 'EOF'
|
|
#!/bin/bash
|
|
# 停止数字档案系统
|
|
echo "停止数字档案系统..."
|
|
docker-compose down
|
|
|
|
echo "清理未使用的镜像和容器..."
|
|
docker system prune -f
|
|
EOF
|
|
|
|
# 创建更新脚本
|
|
cat > ${DEPLOY_DIR}/update.sh << 'EOF'
|
|
#!/bin/bash
|
|
# 更新数字档案系统
|
|
echo "停止服务..."
|
|
docker-compose down
|
|
|
|
echo "拉取最新镜像..."
|
|
docker-compose pull
|
|
|
|
echo "启动服务..."
|
|
docker-compose up -d
|
|
|
|
echo "清理旧镜像..."
|
|
docker image prune -f
|
|
EOF
|
|
|
|
# 设置脚本执行权限
|
|
chmod +x ${DEPLOY_DIR}/start.sh
|
|
chmod +x ${DEPLOY_DIR}/stop.sh
|
|
chmod +x ${DEPLOY_DIR}/update.sh
|
|
|
|
# 创建生产环境docker-compose文件
|
|
cat > ${DEPLOY_DIR}/docker-compose.prod.yml << 'EOF'
|
|
version: '3.8'
|
|
|
|
services:
|
|
app:
|
|
image: digital-archive:latest
|
|
container_name: digital-archive-app
|
|
ports:
|
|
- "9081:9081"
|
|
volumes:
|
|
- ./data/upload:/app/data/upload
|
|
- ./data/temp:/app/data/temp
|
|
- ./data/unzip:/app/data/unzip
|
|
- ./data/images:/app/data/images
|
|
- ./data/reports:/app/data/reports
|
|
- ./logs:/app/logs
|
|
env_file:
|
|
- .env
|
|
depends_on:
|
|
- database
|
|
- redis
|
|
networks:
|
|
- archive-network
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:9081/point-strategy/actuator/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 60s
|
|
|
|
database:
|
|
image: kingbase:v8.6.0
|
|
container_name: digital-archive-db
|
|
ports:
|
|
- "54321:54321"
|
|
environment:
|
|
- KINGBASE_USER=system
|
|
- KINGBASE_PASSWORD=12345678ab
|
|
- KINGBASE_DATABASE=enterprise_digital_archives
|
|
volumes:
|
|
- ./data/database:/var/lib/kingbase/data
|
|
networks:
|
|
- archive-network
|
|
restart: unless-stopped
|
|
|
|
redis:
|
|
image: redis:6-alpine
|
|
container_name: digital-archive-redis
|
|
ports:
|
|
- "6379:6379"
|
|
command: redis-server --requirepass Abc123456
|
|
volumes:
|
|
- ./data/redis:/data
|
|
networks:
|
|
- archive-network
|
|
restart: unless-stopped
|
|
|
|
networks:
|
|
archive-network:
|
|
driver: bridge
|
|
EOF
|
|
|
|
echo -e "${GREEN}部署完成!${NC}"
|
|
echo -e "${YELLOW}部署目录: ${DEPLOY_DIR}${NC}"
|
|
echo -e "${YELLOW}可用命令:${NC}"
|
|
echo " 启动服务: cd ${DEPLOY_DIR} && ./start.sh"
|
|
echo " 停止服务: cd ${DEPLOY_DIR} && ./stop.sh"
|
|
echo " 更新服务: cd ${DEPLOY_DIR} && ./update.sh"
|
|
echo " 查看状态: cd ${DEPLOY_DIR} && docker-compose ps"
|
|
echo " 查看日志: cd ${DEPLOY_DIR} && docker-compose logs -f app"
|
|
echo ""
|
|
echo -e "${YELLOW}访问地址: http://localhost:9081/point-strategy${NC}" |