78 lines
2.5 KiB
Bash
78 lines
2.5 KiB
Bash
#!/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
|