Browse Source

Fix: 修复环境变量无法穿透的问题,导致crontab无法正确更新模组

Dcrclub 1 tháng trước cách đây
mục cha
commit
ee8a5840df
3 tập tin đã thay đổi với 22 bổ sung2 xóa
  1. 1 2
      DockerFile/Dockerfile
  2. 13 0
      DockerFile/start.sh
  3. 8 0
      DockerFile/updatemod.sh

+ 1 - 2
DockerFile/Dockerfile

@@ -39,8 +39,7 @@ RUN chown -R steam:steam ${STEAMCMD_DIR} && \
     chown steam:steam /opt/updatemod.sh && \
     chown -R steam:steam /opt/games
 
-# 创建crontab配置文件
-RUN echo "*/15 * * * * /opt/updatemod.sh >> /var/log/updatemod.log 2>&1" > /etc/cron.d/updatemod
+RUN touch /etc/cron.d/updatemod
 
 WORKDIR ${STEAMCMD_DIR}
 

+ 13 - 0
DockerFile/start.sh

@@ -17,6 +17,19 @@ setup_crontab() {
     
     echo "设置crontab自动更新任务..."
     
+    # 保存环境变量到/etc/environment文件(解决cron任务无法读取环境变量的问题)
+    echo "保存环境变量到/etc/environment..."
+    cat > /etc/environment << EOF
+STEAM_USERNAME=${STEAM_USERNAME}
+STEAM_PASSWORD=${STEAM_PASSWORD}
+MOD_IDS=${MOD_IDS}
+DAYZ_MISSIONS=${DAYZ_MISSIONS}
+DAYZ_SERVER_PORT=${DAYZ_SERVER_PORT}
+DAYZ_CPU_COUNT=${DAYZ_CPU_COUNT}
+ENABLE_AUTO_UPDATE=${ENABLE_AUTO_UPDATE}
+UPDATE_INTERVAL=${UPDATE_INTERVAL}
+EOF
+    
     # 启动cron服务
     service cron start
     

+ 8 - 0
DockerFile/updatemod.sh

@@ -6,6 +6,11 @@
 
 set -e
 
+# 加载环境变量(解决cron任务无法读取环境变量的问题)
+if [ -f "/etc/environment" ]; then
+    export $(cat /etc/environment | xargs)
+fi
+
 # 设置日志文件路径
 LOG_FILE="/var/log/updatemod.log"
 
@@ -17,6 +22,9 @@ echo "==========================================" >> "$LOG_FILE"
 # 检查环境变量
 if [ -z "$STEAM_USERNAME" ] || [ -z "$STEAM_PASSWORD" ]; then
     echo "错误: 请设置 STEAM_USERNAME 和 STEAM_PASSWORD 环境变量" >> "$LOG_FILE"
+    echo "当前环境变量状态:" >> "$LOG_FILE"
+    echo "STEAM_USERNAME: ${STEAM_USERNAME:-未设置}" >> "$LOG_FILE"
+    echo "STEAM_PASSWORD: ${STEAM_PASSWORD:-未设置}" >> "$LOG_FILE"
     exit 1
 fi