恢复代理构建和配置仓库克隆,简化一次性容器部署
This commit is contained in:
@@ -0,0 +1,4 @@
|
|||||||
|
.git
|
||||||
|
vendor
|
||||||
|
__pycache__
|
||||||
|
tests
|
||||||
@@ -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
|
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
/vendor/
|
||||||
|
__pycache__/
|
||||||
+25
-21
@@ -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" ]
|
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -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
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user