恢复代理构建和配置仓库克隆,简化一次性容器部署
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
.git
|
||||
vendor
|
||||
__pycache__
|
||||
tests
|
||||
@@ -1,8 +1,7 @@
|
||||
PROXY=http://192.168.0.208:7890
|
||||
GIT_LINK=https://git.lichx.top/li_chx/MAAsConfig.git
|
||||
GIT_NAME=MAAsConfig
|
||||
REDROID_PATH=/app/redroid-rk3588
|
||||
MAA_CONFIG_DIR=/app/MAAsConfig/ArknightsMaaConfig
|
||||
MAA_LOG=/app/redroid-log
|
||||
# default.json of MAA also set the ADB_ADDRESS
|
||||
ADB_ADDRESS=172.17.0.1:5555
|
||||
ADB_ADDRESS=127.0.0.1:5555
|
||||
REDROID_CONTAINER=redroid
|
||||
DOCKER_GID=996
|
||||
# 多个游戏用空格分隔;MaaEnd 任务配置完成后可改成 "arknights maaend"。
|
||||
GAMES=arknights
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
/vendor/
|
||||
__pycache__/
|
||||
+25
-21
@@ -1,23 +1,27 @@
|
||||
FROM ubuntu:24.04
|
||||
ARG proxy git_link git_name
|
||||
ENV http_proxy=$proxy \
|
||||
https_proxy=$proxy \
|
||||
PATH=/app/bin:$PATH
|
||||
ARG proxy
|
||||
ARG git_link=https://git.lichx.top/li_chx/MAAsConfig.git
|
||||
ENV http_proxy=$proxy https_proxy=$proxy \
|
||||
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
|
||||
RUN cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak \
|
||||
&& echo "# 阿里云 Ubuntu 24.04 镜像源" > /etc/apt/sources.list.d/ubuntu.sources \
|
||||
&& echo "Types: deb" >> /etc/apt/sources.list.d/ubuntu.sources \
|
||||
&& echo "URIs: http://mirrors.aliyun.com/ubuntu-ports/" >> /etc/apt/sources.list.d/ubuntu.sources \
|
||||
&& echo "Suites: noble noble-updates noble-security" >> /etc/apt/sources.list.d/ubuntu.sources \
|
||||
&& echo "Components: main restricted universe multiverse" >> /etc/apt/sources.list.d/ubuntu.sources \
|
||||
&& echo "Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg" >> /etc/apt/sources.list.d/ubuntu.sources \
|
||||
&& apt update && apt upgrade -y && apt install -y wget tar jq git docker.io python3 python-is-python3 docker-compose-v2 adb libatomic1
|
||||
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" ]
|
||||
COPY install.sh /app/install.sh
|
||||
# 构建临时目录不使用运行时的 /state 挂载。
|
||||
RUN TMPDIR=/tmp MAA_CACHE_DIR=/tmp/maa-cache bash install.sh \
|
||||
&& http_proxy= https_proxy= git clone "$git_link" /app/MAAsConfig \
|
||||
&& chown -R app:app /app
|
||||
USER app
|
||||
ENV TMPDIR=/state/tmp
|
||||
ENTRYPOINT ["/app/MAAsConfig/run_all.sh"]
|
||||
|
||||
@@ -1,3 +1,44 @@
|
||||
变量的转递主要通过.env 因为仅是个人使用 部分定义不规范
|
||||
本项目不包括redroid的安装和配置
|
||||
关于redroid 还需查看github相关仓库信息
|
||||
# MAAsDocker(个人使用)
|
||||
|
||||
流程: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:
|
||||
app:
|
||||
image: lichx/maa-container:v1.0
|
||||
build:
|
||||
image: lichx/maa-container:personal
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
args:
|
||||
proxy: ${PROXY}
|
||||
git_link: ${GIT_LINK}
|
||||
git_name: ${GIT_NAME}
|
||||
user: "1001:1001"
|
||||
group_add: ["${DOCKER_GID:-996}"]
|
||||
network_mode: host
|
||||
init: true
|
||||
restart: "no"
|
||||
environment:
|
||||
- redroid_path=${REDROID_PATH}
|
||||
- adb_address=${ADB_ADDRESS}
|
||||
- MAA_CONFIG_DIR=${MAA_CONFIG_DIR}
|
||||
- MAA_LOG=${MAA_LOG}
|
||||
http_proxy: ${PROXY}
|
||||
https_proxy: ${PROXY}
|
||||
ADB_ADDRESS: ${ADB_ADDRESS}
|
||||
REDROID_CONTAINER: ${REDROID_CONTAINER:-redroid}
|
||||
GAMES: ${GAMES:-arknights}
|
||||
MAA_LOG: info
|
||||
volumes:
|
||||
- ~/.config/redroid-rk3588:/app/redroid-rk3588
|
||||
- ~/redroid-data:/home/ubuntu/redroid-data
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- ~/.config/redroid-log:/app/redroid-log
|
||||
|
||||
# network_mode: host
|
||||
- ../state:/state
|
||||
- ../state/home:/home/app
|
||||
- ../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
|
||||
cd $(dirname $(readlink -f "$0"))
|
||||
git fetch origin && git reset --hard origin/master && git pull
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user