From c5baea9abd72644618fc9affd3b592b0bd572074 Mon Sep 17 00:00:00 2001 From: Dcr Date: Thu, 24 Jul 2025 11:53:43 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20chore(.env):=20=E7=A7=BB?= =?UTF-8?q?=E9=99=A4Steam=E8=B4=A6=E6=88=B7=E4=BF=A1=E6=81=AF=E5=B9=B6?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0MOD=5FIDS=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 删除敏感的环境变量注释 - 添加MOD_IDS配置用于mod管理 📦 build(Dockerfile): 添加mod更新脚本支持 - 添加updatemod.sh脚本文件 - 设置脚本执行权限 - 更新文件所有权配置 📝 docs(README): 添加MOD_IDS说明和mod更新指南 - 在环境变量表格中添加MOD_IDS说明 - 新增客户端mod更新操作指南 📦 build(docker-compose): 添加MOD_IDS环境变量支持 - 在docker-compose.yml中添加MOD_IDS环境变量配置 --- .env | 5 +--- DockerFile/Dockerfile | 4 ++- DockerFile/updatemod.sh | 54 +++++++++++++++++++++++++++++++++++++++++ README.md | 8 ++++++ docker-compose.yml | 1 + 5 files changed, 67 insertions(+), 5 deletions(-) create mode 100644 DockerFile/updatemod.sh diff --git a/.env b/.env index fe910eb..ba9e7f1 100644 --- a/.env +++ b/.env @@ -1,7 +1,4 @@ -# Steam账户信息 -# 请将以下值替换为您的实际Steam用户名和密码 STEAM_USERNAME=your_steam_username STEAM_PASSWORD=your_steam_password -# 注意:为了安全起见,建议使用Steam Guard令牌而不是账户密码 -# 如果启用了Steam Guard,密码应该是您的Steam Guard令牌 \ No newline at end of file +MOD_IDS=123456789,987654321 \ No newline at end of file diff --git a/DockerFile/Dockerfile b/DockerFile/Dockerfile index 06c6d3d..faa6c54 100644 --- a/DockerFile/Dockerfile +++ b/DockerFile/Dockerfile @@ -24,7 +24,8 @@ RUN mkdir -p ${STEAMCMD_DIR} COPY install_dayz.sh /opt/install_dayz.sh COPY start.sh /opt/start.sh -RUN chmod +x /opt/install_dayz.sh /opt/start.sh +COPY updatemod.sh /opt/updatemod.sh +RUN chmod +x /opt/install_dayz.sh /opt/start.sh /opt/updatemod.sh RUN useradd -m -d /home/steam steam @@ -34,6 +35,7 @@ RUN chown -R steam:steam ${STEAMCMD_DIR} && \ chown -R steam:steam /home/steam && \ chown steam:steam /opt/install_dayz.sh && \ chown steam:steam /opt/start.sh && \ + chown steam:steam /opt/updatemod.sh && \ chown -R steam:steam /opt/games WORKDIR ${STEAMCMD_DIR} diff --git a/DockerFile/updatemod.sh b/DockerFile/updatemod.sh new file mode 100644 index 0000000..d74e141 --- /dev/null +++ b/DockerFile/updatemod.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +# DayZ Mod更新脚本 +# 使用方法: docker compose run --rm steamcmd updatemod + +set -e + +echo "==========================================" +echo "开始更新DayZ Mod..." +echo "时间: $(date)" +echo "==========================================" + +# 检查环境变量 +if [ -z "$STEAM_USERNAME" ] || [ -z "$STEAM_PASSWORD" ]; then + echo "错误: 请设置 STEAM_USERNAME 和 STEAM_PASSWORD 环境变量" + exit 1 +fi + +# 切换到SteamCMD目录 +cd /opt/steamcmd + +# 检查SteamCMD是否已安装 +if [ ! -f "/opt/steamcmd/steamcmd.sh" ]; then + echo "SteamCMD未安装,开始下载和安装..." + wget -O /opt/steamcmd/steamcmd_linux.tar.gz ${STEAMCMD_URL} + tar xvzf /opt/steamcmd/steamcmd_linux.tar.gz -C /opt/steamcmd + rm /opt/steamcmd/steamcmd_linux.tar.gz + chmod +x /opt/steamcmd/steamcmd.sh + echo "SteamCMD安装完成!" +fi + +# 更新Mod(如果有配置的话) +if [ -n "$MOD_IDS" ]; then + echo "开始更新Mod..." + IFS=',' read -ra MOD_ARRAY <<< "$MOD_IDS" + + for mod_id in "${MOD_ARRAY[@]}"; do + echo "更新Mod ID: $mod_id" + ./steamcmd.sh +login $STEAM_USERNAME $STEAM_PASSWORD +workshop_download_item 221100 $mod_id +quit + + if [ $? -eq 0 ]; then + echo "Mod $mod_id 更新完成" + else + echo "Mod $mod_id 更新失败" + fi + done +else + echo "未配置Mod ID,跳过Mod更新" +fi + +echo "==========================================" +echo "Mod更新完成!" +echo "时间: $(date)" +echo "==========================================" \ No newline at end of file diff --git a/README.md b/README.md index a7e4920..6266e07 100644 --- a/README.md +++ b/README.md @@ -88,6 +88,7 @@ docker-compose up -d | `DAYZ_MISSIONS` | `dayzOffline.chernarusplus` | 服务器地图 | | `DAYZ_SERVER_PORT` | `2302` | 服务器端口 | | `DAYZ_CPU_COUNT` | `4` | 使用的CPU核心数 | +| `MOD_IDS` | `空` | 需要更新的modid,例如:"123456789,987654321" | ### 端口映射 @@ -171,6 +172,13 @@ docker-compose up -d 2. Mod文件夹应以 `@` 开头 3. 重启服务器以加载新Mod +### 更新客户端Mod +需要先停止容器运行 +`docker compose down` +然后运行更新命令 +`docker compose run --rm steamcmd updatemod` +更新完毕后启动docker容器即可. + ### Mod配置示例 ``` diff --git a/docker-compose.yml b/docker-compose.yml index c4a67c3..2ef031c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -14,6 +14,7 @@ services: environment: - STEAM_USERNAME=${STEAM_USERNAME:-} - STEAM_PASSWORD=${STEAM_PASSWORD:-} + - MOD_IDS=${MOD_IDS:-} - DAYZ_MISSIONS=dayzOffline.chernarusplus - DAYZ_SERVER_PORT=2302 - DAYZ_CPU_COUNT=4