恢复代理构建和配置仓库克隆,简化一次性容器部署

This commit is contained in:
2026-11-01 22:41:35 +08:00
parent ccaffa4cf6
commit a531c33e54
8 changed files with 120 additions and 48 deletions
+4
View File
@@ -0,0 +1,4 @@
.git
vendor
__pycache__
tests
+5 -6
View File
@@ -1,8 +1,7 @@
PROXY=http://192.168.0.208:7890 PROXY=http://192.168.0.208:7890
GIT_LINK=https://git.lichx.top/li_chx/MAAsConfig.git GIT_LINK=https://git.lichx.top/li_chx/MAAsConfig.git
GIT_NAME=MAAsConfig ADB_ADDRESS=127.0.0.1:5555
REDROID_PATH=/app/redroid-rk3588 REDROID_CONTAINER=redroid
MAA_CONFIG_DIR=/app/MAAsConfig/ArknightsMaaConfig DOCKER_GID=996
MAA_LOG=/app/redroid-log # 多个游戏用空格分隔;MaaEnd 任务配置完成后可改成 "arknights maaend"。
# default.json of MAA also set the ADB_ADDRESS GAMES=arknights
ADB_ADDRESS=172.17.0.1:5555
+2
View File
@@ -0,0 +1,2 @@
/vendor/
__pycache__/
+25 -21
View File
@@ -1,23 +1,27 @@
FROM ubuntu:24.04 FROM ubuntu:24.04
ARG proxy git_link git_name ARG proxy
ENV http_proxy=$proxy \ ARG git_link=https://git.lichx.top/li_chx/MAAsConfig.git
https_proxy=$proxy \ ENV http_proxy=$proxy https_proxy=$proxy \
PATH=/app/bin:$PATH no_proxy=localhost,127.0.0.1,git.lichx.top \
PATH=/app/bin:$PATH TZ=Asia/Shanghai PYTHONUNBUFFERED=1 \
HOME=/home/app \
MAA_DATA_DIR=/app/maa MAA_CONFIG_DIR=/app/MAAsConfig/ArknightsMaaConfig \
MAA_STATE_DIR=/state/arknights MAA_CACHE_DIR=/state/cache \
ADB_SERVER_SOCKET=tcp:15037 LOG_DIR=/state/logs
RUN sed -i 's|http://ports.ubuntu.com/ubuntu-ports|http://mirrors.aliyun.com/ubuntu-ports|g' /etc/apt/sources.list.d/ubuntu.sources \
&& apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
curl ca-certificates git docker.io python3 adb tzdata libatomic1 libgomp1 libgl1 libglib2.0-0 \
libx11-6 libxrandr2 libxfixes3 libxi6 libxtst6 libxkbcommon0 libwayland-client0 \
libwayland-cursor0 libwayland-egl1 libegl1 libdbus-1-3 libpulse0 libasound2t64 libvulkan1 \
&& rm -rf /var/lib/apt/lists/* \
&& ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& useradd -m -u 1001 app
WORKDIR /app WORKDIR /app
RUN cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak \ COPY install.sh /app/install.sh
&& echo "# 阿里云 Ubuntu 24.04 镜像源" > /etc/apt/sources.list.d/ubuntu.sources \ # 构建临时目录不使用运行时的 /state 挂载。
&& echo "Types: deb" >> /etc/apt/sources.list.d/ubuntu.sources \ RUN TMPDIR=/tmp MAA_CACHE_DIR=/tmp/maa-cache bash install.sh \
&& echo "URIs: http://mirrors.aliyun.com/ubuntu-ports/" >> /etc/apt/sources.list.d/ubuntu.sources \ && http_proxy= https_proxy= git clone "$git_link" /app/MAAsConfig \
&& echo "Suites: noble noble-updates noble-security" >> /etc/apt/sources.list.d/ubuntu.sources \ && chown -R app:app /app
&& echo "Components: main restricted universe multiverse" >> /etc/apt/sources.list.d/ubuntu.sources \ USER app
&& echo "Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg" >> /etc/apt/sources.list.d/ubuntu.sources \ ENV TMPDIR=/state/tmp
&& apt update && apt upgrade -y && apt install -y wget tar jq git docker.io python3 python-is-python3 docker-compose-v2 adb libatomic1 ENTRYPOINT ["/app/MAAsConfig/run_all.sh"]
RUN mkdir -p /app/MaaAssistantArknights && mkdir -p /app/bin && mkdir -p /app/redroid-log \
&& wget $(wget -qO- https://api.github.com/repos/MaaAssistantArknights/MaaAssistantArknights/releases/latest | jq -r '.assets[] | select(.name | test("linux-aarch64.tar.gz$")) | .browser_download_url') \
-O MAA-latest-linux-aarch64.tar.gz && tar -zxvf MAA-latest-linux-aarch64.tar.gz -C /app/MaaAssistantArknights \
&& ln -s /app/MaaAssistantArknights/maa /app/bin/maa
RUN maa install
RUN git clone $git_link && ln -s /app/$git_name/run_all.sh /app/bin/run_all.sh && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#CMD ["tail","-f","/dev/null"]
CMD [ "run_all.sh" ]
+44 -3
View File
@@ -1,3 +1,44 @@
变量的转递主要通过.env 因为仅是个人使用 部分定义不规范 # MAAsDocker(个人使用)
本项目不包括redroid的安装和配置
关于redroid 还需查看github相关仓库信息 流程:crontab → 更新 MAAsDocker → Compose 启动一次性容器 → 容器更新 MAAsConfig → 更新 MAA → 重启 ReDroid → 执行任务 → 停止 ReDroid → 容器退出。
## 构建
开发板目录 `/home/lichx/maas/MAAsDocker`。修改 `.env` 的代理、Git 地址和 ADB 地址后:
```sh
mkdir -p ../state/{home,tmp,logs}
docker compose build
docker compose up -d
docker compose logs -f app
```
Dockerfile 内仍然 `git clone` MAAsConfig,启动时两层仓库都 `git pull --ff-only`。配置和脚本改完需提交、推送到对应仓库;不再靠 rsync 发布配置。pull 遇到分叉或冲突直接报错,不使用 reset --hard 覆盖本地修改。
构建下载和 `maa update`、`maa self update` 使用 `.env` 中的代理;拉取自己的 Git 仓库、ADB 和游戏任务不走代理。更新 MAA 失败会打印错误并继续使用已安装版本。MaaEnd 下载 latest 包,随镜像重新构建更新。
只面向当前 ARM64 开发板:用户 UID/GID 1001,Docker socket 组 996。容器通过 Docker socket 启停现有 `redroid`,不重建 ReDroid,也不挂载其数据。应用数据、ADB 密钥、缓存和日志都放在本项目 `state/`。
## 定时运行
由 lichx 手动加入 crontab(开发板北京时间):
```cron
0 8,16,22 * * * /home/lichx/maas/MAAsDocker/start-docker.sh >> /home/lichx/maas/state/logs/cron.log 2>&1
```
明日方舟沿用 startup → recruit → infrast → fight → mall → award。保留原来的命令重试、重开游戏重试,以及失败后继续尝试其他任务的行为;最后用退出码记录是否发生失败。
基本进度通过 `MAA_LOG=info` 显示,`tee` 同时保存到 `state/logs/maa-日期-时间.log`;MAA 内核调试日志另存 `state/arknights/debug/asst.log`。
## MaaEnd
当前 `.env` 的 `GAMES=arknights`,尚未自动运行 MaaEnd。需要配置时:
```sh
docker compose run --rm app maaend-config
```
保存后,把 `state/maaend-版本/maafw/config/maa_pi_config.json` 的内容更新到 MAAsConfig 仓库的 `MaaEndConfig/maa_pi_config.json`,提交并推送。随后把 `.env` 改为 `GAMES="arknights maaend"`,两种游戏会依次运行,各自结束时停止 ReDroid。
MaaEnd 只保留必要适配:补齐 CLI 的资源路径,在 state 中生成 ADB 专用 interface,省略 CLI 不支持的 hotkey 设置导入;保留上游 interface 和默认游戏资源。用户数据随版本保存在 state 中,不自动删除旧版本数据。
+17 -15
View File
@@ -1,24 +1,26 @@
#version: '3.8' name: maas
services: services:
app: app:
image: lichx/maa-container:v1.0 image: lichx/maa-container:personal
build: build:
context: . context: .
dockerfile: Dockerfile
args: args:
proxy: ${PROXY} proxy: ${PROXY}
git_link: ${GIT_LINK} git_link: ${GIT_LINK}
git_name: ${GIT_NAME} user: "1001:1001"
group_add: ["${DOCKER_GID:-996}"]
network_mode: host
init: true
restart: "no"
environment: environment:
- redroid_path=${REDROID_PATH} http_proxy: ${PROXY}
- adb_address=${ADB_ADDRESS} https_proxy: ${PROXY}
- MAA_CONFIG_DIR=${MAA_CONFIG_DIR} ADB_ADDRESS: ${ADB_ADDRESS}
- MAA_LOG=${MAA_LOG} REDROID_CONTAINER: ${REDROID_CONTAINER:-redroid}
GAMES: ${GAMES:-arknights}
MAA_LOG: info
volumes: volumes:
- ~/.config/redroid-rk3588:/app/redroid-rk3588
- ~/redroid-data:/home/ubuntu/redroid-data
- /var/run/docker.sock:/var/run/docker.sock - /var/run/docker.sock:/var/run/docker.sock
- ~/.config/redroid-log:/app/redroid-log - ../state:/state
- ../state/home:/home/app
# network_mode: host - ../state/tmp:/tmp
Executable
+17
View File
@@ -0,0 +1,17 @@
#!/usr/bin/env bash
set -euo pipefail
mkdir -p /app/bin /app/maa /app/maaend
# 跟随 latest 的跳转取版本号,避免 GitHub API 的匿名限流。
cli=$(curl -fsSL -o /dev/null -w '%{url_effective}' https://github.com/MaaAssistantArknights/maa-cli/releases/latest)
cli=${cli##*/}
curl -fL --retry 3 "https://github.com/MaaAssistantArknights/maa-cli/releases/download/$cli/maa_cli-$cli-aarch64-unknown-linux-gnu.tar.gz" | tar -xz -C /app/bin maa
maa install
end=$(curl -fsSL -o /dev/null -w '%{url_effective}' https://github.com/MaaEnd/MaaEnd/releases/latest)
end=${end##*/}
curl -fL --retry 3 "https://github.com/MaaEnd/MaaEnd/releases/download/$end/MaaEnd-linux-aarch64-$end.tar.gz" | tar -xz -C /app/maaend
# MaaPiCli 从 maafw 目录读取界面和资源;保留上游 agent 的相对路径。
for path in /app/maaend/*; do
name=$(basename "$path")
[[ "$name" == maafw ]] || ln -s "../$name" "/app/maaend/maafw/$name"
done
chmod +x /app/maaend/maafw/MaaPiCli /app/maaend/agent/go-service /app/maaend/agent/cpp-algo
+6 -3
View File
@@ -1,4 +1,7 @@
#!/bin/bash #!/usr/bin/env bash
cd $(dirname $(readlink -f "$0")) set -euo pipefail
git fetch origin && git reset --hard origin/master && git pull cd -- "$(dirname -- "$(readlink -f -- "$0")")"
# 保留启动时更新;pull 遇到冲突报错,不强制丢弃本地改动。
http_proxy= https_proxy= HTTP_PROXY= HTTPS_PROXY= git pull --ff-only
mkdir -p ../state/{home,tmp,logs}
docker compose up -d docker compose up -d