File tree Expand file tree Collapse file tree 2 files changed +11
-4
lines changed
Expand file tree Collapse file tree 2 files changed +11
-4
lines changed Original file line number Diff line number Diff line change 11# Runner 容器镜像(容器模式用):仅包含 Agent + Runner 运行依赖,Runner 目录由 Manager 挂载到 /runner
2+ # Agent 二进制必须放在非 /runner 路径(如 /app/runner-agent),否则挂载 -v host_path:/runner 会覆盖镜像内 /runner,导致入口程序丢失
23# 使用 BUILDPLATFORM 在宿主机(amd64)上构建,TARGETOS/TARGETARCH 交叉编译,避免 QEMU 下 go build 失败
34ARG BUILDPLATFORM=linux/amd64
45FROM --platform=$BUILDPLATFORM golang:1.26-bookworm AS builder
@@ -34,9 +35,13 @@ RUN install -m 0755 -d /etc/apt/keyrings \
3435
3536RUN groupadd -g 1001 app && useradd -r -u 1001 -g app -d /runner -s /bin/bash app
3637
38+ # Agent 放在 /app,避免被 -v mountSrc:/runner 挂载覆盖导致 exec 找不到入口
39+ RUN install -m 0755 -d /app
40+ COPY --from=builder /app/runner-agent /app/runner-agent
41+ RUN chown app:app /app/runner-agent
42+
3743WORKDIR /runner
38- COPY --from=builder /app/runner-agent /runner/runner-agent
39- RUN chown -R app:app /runner
44+ RUN chown app:app /runner
4045
4146ENV RUNNER_INSTALL_DIR=/runner
4247ENV AGENT_PORT=8081
@@ -45,4 +50,4 @@ USER app
4550EXPOSE 8081
4651HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 \
4752 CMD curl -fsS http://127.0.0.1:8081/health || exit 1
48- ENTRYPOINT ["/runner /runner-agent"]
53+ ENTRYPOINT ["/app /runner-agent"]
Original file line number Diff line number Diff line change @@ -143,7 +143,7 @@ docker run -d --name runner-manager \
143143### 机制简述
144144
145145- ** Manager** :通过宿主机 Docker(挂载 ` docker.sock ` )创建/启停 Runner 容器,并与 Runner 容器处于同一网络,通过 HTTP 访问容器内 ** Agent** 获取 Runner 进程状态。
146- - ** Runner 容器** :基于 ` Dockerfile.runner ` 构建的镜像,内含 ** Runner Agent** (提供 ` /status ` 、` /start ` 、` /stop ` )和 Runner 运行依赖;Runner 安装目录由 Manager 挂载到容器内 ` /runner ` 。
146+ - ** Runner 容器** :基于 ` Dockerfile.runner ` 构建的镜像,内含 ** Runner Agent** (提供 ` /status ` 、` /start ` 、` /stop ` )和 Runner 运行依赖;Agent 入口为 ` /app/runner-agent ` (故意不在 ` /runner ` 下,避免挂载 ` -v host_path:/runner ` 时覆盖入口)。 Runner 安装目录由 Manager 挂载到容器内 ` /runner ` 。
147147- ** 启停** :点击「启动」时 Manager 执行 ` docker create ` (若不存在)+ ` docker start ` ,并请求 Agent 的 ` POST /start ` 启动 Runner 进程;「停止」时 ` docker stop ` 该容器。
148148
149149### 配置与构建
@@ -167,6 +167,8 @@ docker run -d --name runner-manager \
167167 docker build -f Dockerfile.runner -t ghcr.io/soulteary/runner-fleet-runner:main .
168168 ` ` `
169169
170+ 若曾用旧版镜像创建过 Runner 容器且出现 `stat /runner/runner-agent : no such file or directory`,需先删除该容器(如 `docker rm -f github-runner-<名称>`),再在界面点击「启动」由 Manager 用新镜像重新创建。
171+
1701723. **部署要求**:
171173 - **Manager 必须使用宿主机 Docker**(`unix:///var/run/docker.sock`)创建/启停 Runner 容器,**不能**把 `DOCKER_HOST` 设为 DinD(`tcp://runner-dind:2375`)。DinD 仅供 **Runner 容器内** Job 的 `docker build` 等使用;若在 `.env` 中设置了 `DOCKER_HOST=tcp://runner-dind:2375`,点击「启动」会报错,请移除或注释该行。宿主机需挂载 `docker.sock` 并设置 `DOCKER_HOST=unix:///var/run/docker.sock`(仓库内 `docker-compose.yml` 默认已配置)。Manager 以非 root(UID 1001)运行,访问 socket 需加入宿主机 **docker 组**:`group_add: [ "${DOCKER_GID:-999}" ]`,GID 不对时在 `.env` 设 `DOCKER_GID=`;或改为 `user: "0:0"` 以 root 运行。
172174 - Runner 容器与 Manager、DinD 在同一网络(如 `runner-net`),以便 Manager 访问 Agent、Runner Job 内访问 DinD。
You can’t perform that action at this time.
0 commit comments