Files

78 lines
2.5 KiB
Bash
Raw Permalink Normal View History

2025-11-24 11:50:15 +08:00
#!/bin/bash
set -e
echo "========================================"
echo "校园新闻管理系统 - 后端服务启动"
echo "========================================"
# 如果挂载的配置文件不存在,使用模板
if [ ! -f /app/config/application.yml ]; then
echo "[INFO] 未找到application.yml使用模板配置"
cp /app/config/application.yml.template /app/config/application.yml
else
echo "[INFO] 使用挂载的application.yml配置"
fi
if [ ! -f /app/config/log4j2-spring.xml ]; then
echo "[INFO] 未找到log4j2-spring.xml使用模板配置"
cp /app/config/log4j2-spring.xml.template /app/config/log4j2-spring.xml
else
echo "[INFO] 使用挂载的log4j2-spring.xml配置"
fi
# 等待数据库就绪
if [ ! -z "$MYSQL_HOST" ]; then
echo "[INFO] 等待MySQL启动 ($MYSQL_HOST:${MYSQL_PORT:-3306})..."
RETRY_COUNT=0
MAX_RETRIES=30
while ! nc -z $MYSQL_HOST ${MYSQL_PORT:-3306}; do
RETRY_COUNT=$((RETRY_COUNT+1))
if [ $RETRY_COUNT -ge $MAX_RETRIES ]; then
echo "[ERROR] MySQL连接超时"
exit 1
fi
echo "[INFO] 等待MySQL就绪... ($RETRY_COUNT/$MAX_RETRIES)"
sleep 2
done
echo "[INFO] MySQL已就绪"
sleep 3
# 注意爬虫配置路径已在MySQL容器初始化时配置好
# 详见docker/Dockerfile.mysql 的 01-init-database.sh
fi
# 等待Redis就绪
if [ ! -z "$REDIS_HOST" ]; then
echo "[INFO] 等待Redis启动 ($REDIS_HOST:${REDIS_PORT:-6379})..."
RETRY_COUNT=0
MAX_RETRIES=30
while ! nc -z $REDIS_HOST ${REDIS_PORT:-6379}; do
RETRY_COUNT=$((RETRY_COUNT+1))
if [ $RETRY_COUNT -ge $MAX_RETRIES ]; then
echo "[ERROR] Redis连接超时"
exit 1
fi
echo "[INFO] 等待Redis就绪... ($RETRY_COUNT/$MAX_RETRIES)"
sleep 2
done
echo "[INFO] Redis已就绪"
fi
# 显示配置信息
echo "========================================"
echo "[INFO] 数据库: $MYSQL_HOST:${MYSQL_PORT:-3306}/$MYSQL_DATABASE"
echo "[INFO] Redis: $REDIS_HOST:${REDIS_PORT:-6379}"
echo "[INFO] 爬虫路径: /app/crawler"
echo "[INFO] Python: $(python3 --version)"
echo "========================================"
# 启动应用
echo "[INFO] 启动Spring Boot应用..."
exec java \
-Djava.security.egd=file:/dev/./urandom \
-Dspring.config.location=/app/config/application.yml \
-Dlogging.config=/app/config/log4j2-spring.xml \
-Dfile.encoding=UTF-8 \
${JAVA_OPTS} \
-jar /app/app.jar