docs: add persistent gitea actions runner compose
This commit is contained in:
@@ -0,0 +1,87 @@
|
|||||||
|
# Gitea + Actions runner
|
||||||
|
|
||||||
|
Этот compose сохраняет существующие данные Gitea в `/srv/gitea` и хранит
|
||||||
|
регистрацию runner отдельно в `/srv/gitea-runner`. Он рассчитан на перенос
|
||||||
|
существующего контейнера, созданного через `docker run`.
|
||||||
|
|
||||||
|
## Подготовка
|
||||||
|
|
||||||
|
На сервере, где работает Gitea, проверьте сеть и контейнер:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker network inspect kycb_internal >/dev/null
|
||||||
|
docker inspect gitea --format '{{json .Mounts}}'
|
||||||
|
docker inspect gitea --format '{{json .Config.Env}}'
|
||||||
|
```
|
||||||
|
|
||||||
|
В каталоге рядом с compose создайте `.env` с правами `600`:
|
||||||
|
|
||||||
|
```dotenv
|
||||||
|
TZ=Asia/Krasnoyarsk
|
||||||
|
GITEA_DATA_DIRECTORY=/srv/gitea
|
||||||
|
GITEA_RUNNER_DATA_DIRECTORY=/srv/gitea-runner
|
||||||
|
|
||||||
|
# Для runner внутри той же Docker-сети:
|
||||||
|
GITEA_INSTANCE_URL=http://gitea:3000/
|
||||||
|
GITEA_RUNNER_NAME=rf4-runner-01
|
||||||
|
GITEA_RUNNER_LABELS=ubuntu-latest:docker://docker.gitea.com/runner-images:ubuntu-latest
|
||||||
|
GITEA_RUNNER_REGISTRATION_TOKEN=вставьте_одноразовый_токен_из_Gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
Токен создаётся в `Repository → Settings → Actions → Runners → Create new
|
||||||
|
runner`. Он не должен попадать в Git, shell history или compose-файл.
|
||||||
|
|
||||||
|
## Переключение без потери данных
|
||||||
|
|
||||||
|
Сначала остановите старый контейнер, но не удаляйте каталог данных:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker stop gitea
|
||||||
|
docker rename gitea gitea-before-compose
|
||||||
|
sudo install -d -m 700 /srv/gitea-runner
|
||||||
|
sudo chmod 600 .env
|
||||||
|
```
|
||||||
|
|
||||||
|
Запустите compose из каталога, где лежат `.env` и
|
||||||
|
`gitea-runner.compose.yaml`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose -f gitea-runner.compose.yaml config
|
||||||
|
docker compose -f gitea-runner.compose.yaml up -d
|
||||||
|
docker compose -f gitea-runner.compose.yaml ps
|
||||||
|
docker compose -f gitea-runner.compose.yaml logs -f runner
|
||||||
|
```
|
||||||
|
|
||||||
|
После запуска в Gitea runner должен иметь состояние `Idle`/`Online`. Проверка
|
||||||
|
файлов регистрации:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo find /srv/gitea-runner -maxdepth 2 -type f -print
|
||||||
|
```
|
||||||
|
|
||||||
|
Старый контейнер оставьте остановленным до проверки web UI, SSH и Actions. Если
|
||||||
|
нужно вернуться назад:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose -f gitea-runner.compose.yaml down
|
||||||
|
docker rename gitea-before-compose gitea
|
||||||
|
docker start gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
Команда `down` удаляет только контейнеры compose, а `/srv/gitea` и
|
||||||
|
`/srv/gitea-runner` не удаляет.
|
||||||
|
|
||||||
|
## Важные условия
|
||||||
|
|
||||||
|
`GITEA_INSTANCE_URL` должен быть доступен из контейнера runner. Если Gitea
|
||||||
|
работает за reverse proxy и внутренний адрес `http://gitea:3000/` не подходит,
|
||||||
|
укажите внешний `ROOT_URL`, доступный с этого сервера.
|
||||||
|
|
||||||
|
Runner получает доступ к `/var/run/docker.sock`, потому что workflow проекта
|
||||||
|
запускает Docker Compose, PostgreSQL service и Playwright. Такой runner должен
|
||||||
|
исполнять только доверенный код: доступ к socket фактически даёт заданиям
|
||||||
|
административный доступ к Docker-хосту.
|
||||||
|
|
||||||
|
Если runner уже регистрировался с другим label, удалите старую регистрацию в
|
||||||
|
Gitea и используйте новый каталог `/srv/gitea-runner`; файл регистрации внутри
|
||||||
|
`/data` вручную не редактируйте.
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
services:
|
||||||
|
gitea:
|
||||||
|
image: gitea/gitea:latest
|
||||||
|
container_name: gitea
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
PUID: "1000"
|
||||||
|
PGID: "1000"
|
||||||
|
TZ: ${TZ:-Asia/Krasnoyarsk}
|
||||||
|
ports:
|
||||||
|
- "3232:22"
|
||||||
|
volumes:
|
||||||
|
- ${GITEA_DATA_DIRECTORY:-/srv/gitea}:/data
|
||||||
|
networks:
|
||||||
|
- kycb_internal
|
||||||
|
|
||||||
|
runner:
|
||||||
|
image: docker.io/gitea/act_runner:latest
|
||||||
|
container_name: gitea-runner
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
- gitea
|
||||||
|
environment:
|
||||||
|
GITEA_INSTANCE_URL: ${GITEA_INSTANCE_URL:-http://gitea:3000/}
|
||||||
|
GITEA_RUNNER_REGISTRATION_TOKEN: ${GITEA_RUNNER_REGISTRATION_TOKEN:?Set GITEA_RUNNER_REGISTRATION_TOKEN in .env}
|
||||||
|
GITEA_RUNNER_NAME: ${GITEA_RUNNER_NAME:-rf4-runner-01}
|
||||||
|
GITEA_RUNNER_LABELS: ${GITEA_RUNNER_LABELS:-ubuntu-latest:docker://docker.gitea.com/runner-images:ubuntu-latest}
|
||||||
|
volumes:
|
||||||
|
- ${GITEA_RUNNER_DATA_DIRECTORY:-/srv/gitea-runner}:/data
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
networks:
|
||||||
|
- kycb_internal
|
||||||
|
|
||||||
|
networks:
|
||||||
|
kycb_internal:
|
||||||
|
external: true
|
||||||
Reference in New Issue
Block a user