首次提交

This commit is contained in:
Dcr
2025-07-22 17:58:34 +08:00
commit 9f993b7793
8 changed files with 833 additions and 0 deletions

29
.dockerignore Normal file
View File

@@ -0,0 +1,29 @@
# Git相关
.git
.gitignore
# Docker相关
Dockerfile
docker-compose.yml
.dockerignore
# 保留启动脚本
!start.sh
# 文档
README.md
*.md
# 日志文件
*.log
# 临时文件
*.tmp
*.temp
# 游戏数据目录(避免复制到镜像中)
games/
steamcmd_data/
# 系统文件
.DS_Store
Thumbs.db

7
.env Normal file
View File

@@ -0,0 +1,7 @@
# Steam账户信息
# 请将以下值替换为您的实际Steam用户名和密码
STEAM_USERNAME=your_steam_username
STEAM_PASSWORD=your_steam_password
# 注意为了安全起见建议使用Steam Guard令牌而不是账户密码
# 如果启用了Steam Guard密码应该是您的Steam Guard令牌

41
DockerFile/Dockerfile Normal file
View File

@@ -0,0 +1,41 @@
# 使用Ubuntu 22.04作为基础镜像
FROM ubuntu:22.04
ENV STEAMCMD_DIR=/opt/steamcmd
ENV STEAMCMD_URL=https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y \
wget \
ca-certificates \
lib32gcc-s1 \
lib32stdc++6 \
libc6-i386 \
libcurl4 \
libncurses5 \
libsdl2-2.0-0 \
libtinfo5 \
libvorbisfile3 \
lib32z1 \
&& rm -rf /var/lib/apt/lists/*
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
RUN useradd -m -d /home/steam steam
RUN mkdir -p /opt/games
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 -R steam:steam /opt/games
WORKDIR ${STEAMCMD_DIR}
CMD ["/opt/start.sh"]

View File

@@ -0,0 +1,37 @@
#!/bin/bash
# DayZ服务器安装脚本
# 使用环境变量中的Steam用户名和密码
# 检查环境变量
if [ -z "$STEAM_USERNAME" ] || [ -z "$STEAM_PASSWORD" ]; then
echo "错误: 请设置 STEAM_USERNAME 和 STEAM_PASSWORD 环境变量"
echo "在本目录下执行 vi .env 设置环境变量"
echo "示例:"
echo "export STEAM_USERNAME=your_username"
echo "export STEAM_PASSWORD=your_password"
exit 1
fi
# 切换到SteamCMD目录
cd /opt/steamcmd
# 运行SteamCMD安装DayZ服务器
echo "开始安装DayZ服务器..."
./steamcmd.sh +login $STEAM_USERNAME $STEAM_PASSWORD +app_update 223350 validate +quit
# 检查安装结果
if [ $? -eq 0 ]; then
echo "DayZ服务器安装完成"
else
echo "安装失败,请检查用户名和密码是否正确"
exit 1
fi
# 初始化BERcon配置
password=$(tr -dc 'A-Za-z0-9!@%^_=+?' < /dev/urandom | head -c 12)
cat > /root/Steam/steamapps/common/DayZServer/battleye/beserver_x64.cfg << EOF
RConPort 2314
RConPassword $password
RestrictRCon 0
EOF

132
DockerFile/start.sh Normal file
View File

@@ -0,0 +1,132 @@
#!/bin/bash
set -e # 遇到错误时退出
echo "=========================================="
echo "SteamCMD容器启动中..."
echo "时间: $(date)"
echo "=========================================="
copy_files() {
local mod_path=$1
local parent_path=$2
local lower_addons_path="${mod_path}/addons"
local upper_addons_path="${mod_path}/Addons"
local lower_keys_path="${mod_path}/keys"
local upper_keys_path="${mod_path}/Keys"
# 处理addons目录
if [ -d "$lower_addons_path" ]; then
find "$lower_addons_path" -type f -name '*.bisign' -exec cp -dpf {} "$parent_path/addons/" \;
elif [ -d "$upper_addons_path" ]; then
find "$upper_addons_path" -type f -name '*.bisign' -exec cp -dpf {} "$parent_path/addons/" \;
fi
# 处理keys目录
if [ -d "$lower_keys_path" ]; then
find "$lower_keys_path" -type f -name '*.bikey' -exec cp -dpf {} "$parent_path/keys/" \;
elif [ -d "$upper_keys_path" ]; then
find "$upper_keys_path" -type f -name '*.bikey' -exec cp -dpf {} "$parent_path/keys/" \;
fi
}
start_dayzserver() {
cd /root/Steam/steamapps/common/DayZServer
# 初始化mod变量
client_mods=""
server_mods=""
while IFS= read -r -d $'\0' folder; do
echo "处理客户端mod: $folder"
copy_files "$folder" "."
if [ -n "$client_mods" ]; then
client_mods="${client_mods};"
fi
client_mods="${client_mods}${folder}"
done < <(find "./client_mod" -type d -name '@*' -print0)
while IFS= read -r -d $'\0' folder; do
echo "处理服务端mod: $folder"
copy_files "$folder" "."
if [ -n "$server_mods" ]; then
server_mods="${server_mods};"
fi
server_mods="${server_mods}${folder}"
done < <(find "./server_mod" -type d -name '@*' -print0)
# 崩溃检测和自动重启循环
while true; do
echo "=========================================="
echo "启动DayZServer..."
echo "时间: $(date)"
echo "端口: ${DAYZ_SERVER_PORT}"
echo "CPU核心数: ${DAYZ_CPU_COUNT}"
echo "客户端mod: ${client_mods}"
echo "服务端mod: ${server_mods}"
echo "=========================================="
echo "执行命令: ./DayZServer -port=${DAYZ_SERVER_PORT} -cpuCount=${DAYZ_CPU_COUNT} -config=serverDZ.cfg -profiles=profiles -mission=./mpmissions/${DAYZ_MISSIONS} -mod=${client_mods} -servermod=${server_mods}"
# 启动DayZServer并捕获退出状态
./DayZServer -port=${DAYZ_SERVER_PORT} -cpuCount=${DAYZ_CPU_COUNT} \
"-config=serverDZ.cfg" "-profiles=profiles" \
"-mission=./mpmissions/${DAYZ_MISSIONS}" \
"-mod=${client_mods}" "-servermod=${server_mods}" &
# 保存进程ID
DAYZ_PID=$!
echo "DayZServer进程ID: $DAYZ_PID"
# 等待进程结束
wait $DAYZ_PID
EXIT_CODE=$?
echo "=========================================="
echo "DayZServer已退出"
echo "退出代码: $EXIT_CODE"
echo "时间: $(date)"
echo "=========================================="
# 检查是否正常退出退出代码0通常表示正常退出
if [ $EXIT_CODE -eq 0 ]; then
echo "DayZServer正常退出将在5秒后重启..."
sleep 5
echo "重新启动DayZServer..."
else
echo "DayZServer异常退出将在5秒后重启..."
sleep 5
echo "重新启动DayZServer..."
fi
done
}
# 检查并安装SteamCMD
if [ ! -f "/opt/steamcmd/steamcmd.sh" ]; then
echo "SteamCMD未安装开始下载和安装..."
echo "下载SteamCMD..."
wget -O /opt/steamcmd/steamcmd_linux.tar.gz ${STEAMCMD_URL}
echo "解压SteamCMD..."
tar xvzf /opt/steamcmd/steamcmd_linux.tar.gz -C /opt/steamcmd
echo "清理临时文件..."
rm /opt/steamcmd/steamcmd_linux.tar.gz
echo "设置执行权限..."
chmod +x /opt/steamcmd/steamcmd.sh
echo "SteamCMD安装完成"
else
echo "SteamCMD已存在跳过安装"
fi
if [ ! -f "/root/Steam/steamapps/common/DayZServer/DayZServer" ]; then
echo "DayZServer未安装开始安装..."
bash /opt/install_dayz.sh
else
echo "DayZServer已安装检查更新"
# 切换到SteamCMD目录
cd /opt/steamcmd
./steamcmd.sh +login $STEAM_USERNAME $STEAM_PASSWORD +app_update 223350 validate +quit
echo "启动DayZServer..."
cd /root/Steam/steamapps/common/DayZServer
start_dayzserver
fi

287
README.md Normal file
View File

@@ -0,0 +1,287 @@
# DayZ服务器 Docker 部署项目
这是一个用于快速部署DayZ服务器的Docker化解决方案。通过Docker容器化技术您可以轻松地在任何支持Docker的系统上运行DayZ服务器无需复杂的本地环境配置。
## 🎯 项目特性
- **一键部署**: 使用Docker Compose实现一键部署DayZ服务器
- **自动安装**: 自动下载并安装SteamCMD和DayZ服务器
- **Mod支持**: 支持客户端和服务端Mod的自动加载
- **崩溃恢复**: 内置崩溃检测和自动重启机制
- **跨平台**: 支持Linux、Windows、macOS等操作系统
- **环境隔离**: 使用Docker容器确保环境隔离和一致性
- **配置灵活**: 支持通过环境变量自定义服务器配置
## 📋 系统要求
- Docker 20.10+
- Docker Compose 2.0+
- 至少4GB可用内存
- 至少10GB可用磁盘空间
- 稳定的网络连接用于下载SteamCMD和DayZ服务器
## 🚀 快速开始
### 1. 克隆项目
```bash
git clone <repository-url> ./Docker_DayzServer
cd Docker_DayzServer
```
### 2. 设置环境变量
创建 `.env` 文件并配置您的Steam账户信息
```bash
# 创建环境变量文件
cat > .env << EOF
STEAM_USERNAME=your_steam_username
STEAM_PASSWORD=your_steam_password
DAYZ_MISSIONS=dayzOffline.chernarusplus
DAYZ_SERVER_PORT=2302
DAYZ_CPU_COUNT=4
EOF
```
**重要**: 请确保使用有效的Steam账户该账户 不需要 拥有DayZ游戏。
### 3. 运行安装脚本
```bash
# 给安装脚本执行权限
chmod +x install.sh
# 运行安装脚本需要root权限
sudo ./install.sh
```
安装脚本将自动:
- 检测您的操作系统
- 安装Docker和Docker Compose
- 构建Docker镜像
- 启动DayZ服务器
### 4. 手动部署(可选)
如果您想手动部署,可以按以下步骤操作:
```bash
# 构建Docker镜像, 如果仓库有更新, 都需要重新 build 一次, 更新不需要 --no-cache
docker-compose build --no-cache
# 运行steamcmd容器进行初始安装
docker-compose run --rm steamcmd
# 启动所有服务
docker-compose up -d
```
## ⚙️ 配置说明
### 环境变量
| 变量名 | 默认值 | 说明 |
|--------|--------|------|
| `STEAM_USERNAME` | - | Steam用户名必需 |
| `STEAM_PASSWORD` | - | Steam密码必需 |
| `DAYZ_MISSIONS` | `dayzOffline.chernarusplus` | 服务器地图 |
| `DAYZ_SERVER_PORT` | `2302` | 服务器端口 |
| `DAYZ_CPU_COUNT` | `4` | 使用的CPU核心数 |
### 端口映射
| 容器端口 | 主机端口 | 说明 |
|----------|----------|------|
| 2302/udp | 2302/udp | DayZ游戏端口 |
| 2305/udp | 2305/udp | DayZ查询端口 |
| 2314/udp | 2314/udp | BattlEye RCon端口 |
### 目录结构
```
Docker_DayzServer/
├── docker-compose.yml # Docker Compose配置文件
├── DockerFile/ # Docker构建文件
│ ├── Dockerfile # Docker镜像定义
│ ├── install_dayz.sh # DayZ安装脚本
│ └── start.sh # 启动脚本
├── install.sh # 一键安装脚本
└── dayz/ # 数据目录(自动创建)
├── .steamcmd/ # SteamCMD数据
├── .dayz_server/ # DayZ服务器文件
├── client_mod/ # 客户端Mod
├── server_mod/ # 服务端Mod
├── battleye/ # BattlEye配置
├── profiles/ # 服务器配置文件
└── mpmissions/ # 地图文件
```
## 🎮 使用说明
### 启动服务器
```bash
# 启动所有服务
docker-compose up -d
# 查看运行状态
docker-compose ps
# 查看日志
docker-compose logs -f steamcmd
```
### 停止服务器
```bash
# 停止所有服务
docker-compose down
# 停止并删除数据卷(谨慎使用)
docker-compose down -v
```
### 重启服务器
```bash
# 重启服务
docker-compose restart steamcmd
```
### 更新服务器
```bash
# 重新构建镜像并启动
docker-compose build --no-cache
docker-compose up -d
```
## 🔧 Mod管理
### 添加客户端Mod
1. 将Mod文件放入 `dayz/client_mod/` 目录
2. Mod文件夹应以 `@` 开头
3. 重启服务器以加载新Mod
### 添加服务端Mod
1. 将Mod文件放入 `dayz/server_mod/` 目录
2. Mod文件夹应以 `@` 开头
3. 重启服务器以加载新Mod
### Mod配置示例
```
dayz/
├── client_mod/
│ ├── @CF
│ └── @DayZExpansion
└── server_mod/
└── @DayZExpansionServer
```
## 📊 监控和日志
### 查看实时日志
```bash
# 查看容器日志
docker-compose logs -f steamcmd
# 查看特定时间段的日志
docker-compose logs --since="2024-01-01T00:00:00" steamcmd
```
### 服务器状态检查
```bash
# 检查容器状态
docker-compose ps
# 检查资源使用情况
docker stats steamcmd
```
## 🔒 安全配置
### BattlEye配置
BattlEye配置文件位于 `dayz/battleye/beserver_x64.cfg`,包含:
- RCon端口2314
- 自动生成的RCon密码
- 远程管理设置
### 防火墙配置
确保以下端口在防火墙中开放:
- UDP 2302 (游戏端口)
- UDP 2305 (查询端口)
- UDP 2314 (RCon端口)
## 🛠️ 故障排除
### 常见问题
1. **Steam登录失败**
- 检查Steam用户名和密码是否正确
- 检查网络连接
2. **服务器无法启动**
- 检查端口是否被占用
- 查看容器日志:`docker-compose logs steamcmd`
- 确保有足够的磁盘空间
3. **Mod加载失败**
- 检查Mod文件夹名称是否正确@开头
- 确保Mod文件完整
- 查看启动日志中的Mod加载信息
### 调试命令
```bash
# 进入容器进行调试
docker-compose exec steamcmd bash
# 查看容器资源使用情况
docker stats steamcmd
# 检查网络连接
docker-compose exec steamcmd netstat -tulpn
```
## 📝 更新日志
### v1.0.0
- 初始版本发布
- 支持基本的DayZ服务器部署
- 集成SteamCMD自动安装
- 支持Mod加载
- 内置崩溃恢复机制
## 🤝 贡献
欢迎提交Issue和Pull Request来改进这个项目
## 📄 许可证
本项目采用MIT许可证。详见LICENSE文件。
## ⚠️ 免责声明
- 本项目仅供学习和研究使用
- 请确保遵守DayZ和Steam的服务条款
- 使用本项目的风险由用户自行承担
- 建议在测试环境中先进行验证
## 📞 支持
如果您在使用过程中遇到问题,请:
1. 查看本文档的故障排除部分
2. 检查项目的Issue页面
3. 提交新的Issue并提供详细的错误信息
---
**祝您游戏愉快!** 🎮

24
docker-compose.yml Normal file
View File

@@ -0,0 +1,24 @@
services:
steamcmd:
build: ./DockerFile/
container_name: steamcmd
volumes:
- ./dayz/.steamcmd:/root/Steam
- ./dayz/.dayz_server:/root/Steam/steamapps/common/DayZServer
- ./dayz/.steamcmd_data:/opt/steamcmd
- ./dayz/client_mod:/root/Steam/steamapps/common/DayZServer/client_mod
- ./dayz/server_mod:/root/Steam/steamapps/common/DayZServer/server_mod
- ./dayz/battleye:/root/Steam/steamapps/common/DayZServer/battleye
- ./dayz/profiles:/root/Steam/steamapps/common/DayZServer/profiles
- ./dayz/mpmissions:/root/Steam/steamapps/common/DayZServer/mpmissions
environment:
- STEAM_USERNAME=${STEAM_USERNAME:-}
- STEAM_PASSWORD=${STEAM_PASSWORD:-}
- DAYZ_MISSIONS=dayzOffline.chernarusplus
- DAYZ_SERVER_PORT=2302
- DAYZ_CPU_COUNT=4
ports:
- "2302:2302/udp"
- "2305:2305/udp"
- "2314:2314/udp"
restart: unless-stopped

276
install.sh Normal file
View File

@@ -0,0 +1,276 @@
#!/bin/bash
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 打印带颜色的消息
print_message() {
echo -e "${GREEN}[INFO]${NC} $1"
}
print_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
print_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 检测操作系统类型
detect_os() {
if [ -f /etc/os-release ]; then
. /etc/os-release
OS=$NAME
VER=$VERSION_ID
elif type lsb_release >/dev/null 2>&1; then
OS=$(lsb_release -si)
VER=$(lsb_release -sr)
elif [ -f /etc/lsb-release ]; then
. /etc/lsb-release
OS=$DISTRIB_ID
VER=$DISTRIB_RELEASE
elif [ -f /etc/debian_version ]; then
OS=Debian
VER=$(cat /etc/debian_version)
elif [ -f /etc/SuSe-release ]; then
OS=SuSE
elif [ -f /etc/redhat-release ]; then
OS=RedHat
VER=$(cat /etc/redhat-release | sed 's/.*release \([0-9.]*\).*/\1/')
else
OS=$(uname -s)
VER=$(uname -r)
fi
echo "检测到操作系统: $OS $VER"
}
# 更新包管理器
update_package_manager() {
print_message "更新包管理器..."
if [[ "$OS" == *"Ubuntu"* ]] || [[ "$OS" == *"Debian"* ]]; then
apt update && apt upgrade -y
apt install -y curl wget
elif [[ "$OS" == *"CentOS"* ]] || [[ "$OS" == *"Red Hat"* ]] || [[ "$OS" == *"Rocky"* ]] || [[ "$OS" == *"AlmaLinux"* ]]; then
if command -v dnf &> /dev/null; then
dnf update -y
dnf install -y curl wget
else
yum update -y
yum install -y curl wget
fi
else
print_message "使用通用方式安装curl和wget..."
# 尝试通用方式安装
if command -v apt &> /dev/null; then
apt update && apt install -y curl wget
elif command -v dnf &> /dev/null; then
dnf install -y curl wget
elif command -v yum &> /dev/null; then
yum install -y curl wget
elif command -v zypper &> /dev/null; then
zypper install -y curl wget
else
print_warning "无法自动安装curl和wget请手动安装"
fi
fi
}
# 卸载旧版本Docker
remove_old_docker() {
print_message "检查并卸载旧版本Docker..."
if [[ "$OS" == *"Ubuntu"* ]] || [[ "$OS" == *"Debian"* ]]; then
apt-get remove -y docker docker-engine docker.io containerd runc 2>/dev/null || true
elif [[ "$OS" == *"CentOS"* ]] || [[ "$OS" == *"Red Hat"* ]] || [[ "$OS" == *"Rocky"* ]] || [[ "$OS" == *"AlmaLinux"* ]]; then
if command -v dnf &> /dev/null; then
dnf remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine 2>/dev/null || true
else
yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine 2>/dev/null || true
fi
else
print_message "使用通用方式卸载旧版本Docker..."
# 通用卸载方式
if command -v apt &> /dev/null; then
apt-get remove -y docker docker-engine docker.io containerd runc 2>/dev/null || true
elif command -v dnf &> /dev/null; then
dnf remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine 2>/dev/null || true
elif command -v yum &> /dev/null; then
yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine 2>/dev/null || true
fi
fi
}
# 安装Docker
install_docker() {
print_message "安装Docker..."
# 使用官方的get-docker.sh脚本它已经做了跨平台兼容
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
rm -f get-docker.sh
# 启动并启用Docker服务
systemctl start docker
systemctl enable docker
}
# 安装Docker Compose
install_docker_compose() {
print_message "安装Docker Compose..."
# 检查是否已经安装了docker-compose-plugin
if docker compose version &> /dev/null; then
print_message "Docker Compose 插件已安装"
return
fi
# 下载并安装独立版本的Docker Compose
COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d\" -f4)
# 下载适合当前系统的Docker Compose二进制文件
curl -L "https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
# 创建软链接
ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose
}
# 验证安装
verify_installation() {
print_message "验证安装..."
if command -v docker &> /dev/null; then
print_message "Docker 安装成功"
docker --version
else
print_error "Docker 安装失败"
exit 1
fi
if command -v docker-compose &> /dev/null || docker compose version &> /dev/null; then
print_message "Docker Compose 安装成功"
if command -v docker-compose &> /dev/null; then
docker-compose --version
else
docker compose version
fi
else
print_error "Docker Compose 安装失败"
exit 1
fi
# 测试Docker服务
if systemctl is-active --quiet docker; then
print_message "Docker 服务运行正常"
else
print_error "Docker 服务未运行"
exit 1
fi
}
# 构建和启动Docker容器
build_and_start_containers() {
print_message "开始构建和启动Docker容器..."
# 检查是否存在docker-compose.yml文件
if [ ! -f "docker-compose.yml" ]; then
print_error "未找到docker-compose.yml文件请确保在正确的目录中运行此脚本"
exit 1
fi
# 构建Docker镜像不使用缓存
print_message "构建Docker镜像不使用缓存..."
if command -v docker-compose &> /dev/null; then
docker-compose build --no-cache
else
docker compose build --no-cache
fi
if [ $? -ne 0 ]; then
print_error "Docker镜像构建失败"
exit 1
fi
print_message "Docker镜像构建成功"
# 运行steamcmd容器
print_message "运行steamcmd容器..."
if command -v docker-compose &> /dev/null; then
docker-compose run --rm steamcmd
else
docker compose run --rm steamcmd
fi
if [ $? -ne 0 ]; then
print_warning "steamcmd容器运行失败但继续启动其他服务"
else
print_message "steamcmd容器运行完成"
fi
# 启动所有容器
print_message "启动所有Docker容器..."
if command -v docker-compose &> /dev/null; then
docker-compose up -d
else
docker compose up -d
fi
if [ $? -eq 0 ]; then
print_message "所有Docker容器启动成功"
# 显示容器状态
print_message "容器状态:"
if command -v docker-compose &> /dev/null; then
docker-compose ps
else
docker compose ps
fi
else
print_error "Docker容器启动失败"
exit 1
fi
}
# 主函数
main() {
print_message "开始安装 Docker 和 Docker Compose..."
# 检查是否为root用户
if [[ $EUID -ne 0 ]]; then
print_error "此脚本需要root权限运行"
exit 1
fi
detect_os
update_package_manager
remove_old_docker
install_docker
install_docker_compose
verify_installation
print_message "Docker 和 Docker Compose 安装完成!"
# 询问是否继续构建和启动容器
echo
read -p "是否现在构建和启动Docker容器(y/n): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
build_and_start_containers
print_message "所有操作完成!"
else
print_message "安装完成!您可以稍后手动运行以下命令:"
print_message "1. docker-compose build --no-cache"
print_message "2. docker-compose run --rm steamcmd"
print_message "3. docker-compose up -d"
print_message "运行第二步时,第一次运行会等待steam验证码,需要手动输入"
fi
}
# 执行主函数
main "$@"