Sprint 0 / #18: multi-stage Dockerfile и супервизор entrypoint #49
Reference in New Issue
Block a user
Delete Branch "feat/18-docker-runtime"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Refs #18, Refs #15. (Пересоздано: первая ветка
feat/18-dockerfileбыла выведена из ветки #16 и PR тянул её коммиты — теперь ветка отведена отmain, старый PR #48 закрыт.)Что сделано
go-build(golang:1.23-alpine): собираетamneziawg-goиamneziawg-tools(awg), ревизии параметризованыAMNEZIAWG_GO_REF/AMNEZIAWG_TOOLS_REF;runtime(alpine:3.21): iptables/ip6tables, ipset, iproute2, dnsmasq, curl, tini, su-exec, python3 + venv изrequirements.txt; компилятор удаляется после сборки (apk del .build-deps);awg(непривилегированный) для API, каталоги/config,/data,/run/awg(VOLUME),EXPOSE 8080,LABEL;HEALTHCHECKна/api/v1/health(эндпоинт появится в #31),ENTRYPOINTчерезtiniдля корректных сигналов./dev/net/tun, доступ к iptables, наличиеawg/ipset) с явным FATAL вместо тихой деградации; подготовка каталогов и прав; запись таблицы 100awg-vpn;ip_forward; запускawg-apiподsu-exec awgс пробросом кода возврата в Docker..conf(заглушки, без ключей).Что НЕ проверено (честно)
docker. Проверкаawg --version/ipset --version/HEALTHCHECKв манифесте / размер ≤ 250 MB / поведение безNET_ADMINдолжна выполняться там, где есть Docker (зависит от #17 runner и #21 стенда).amneziawg-*соответствуют upstream-референсу PoC, но должны быть запинены на тег перед релизом (#45).shellcheckв окружении агента отсутствует — проверен толькоsh -n(синтаксис).Гейты
TechLead — сборка прогнана на реальном Docker-хосте, ветка обновилась тремя фиксами.
Хост:
192.168.1.147(Docker 29.4.1) — сборка велась из объединённого контекста этого PR и PR #47 (иначе нетrequirements.txtиbackend/).Коммиты в этой ветке:
fix(#18): builder на golang:1.25—amneziawg-goтребует go ≥ 1.25 (сборка на 1.23 падала).fix(#18): amneziawg-tools/src собирает бинарь wg—cp awgпадало; копируемwg→awg(+awg-quick).fix(#18): создавать /etc/iproute2/rt_tables— в Alpine файла нет, запись таблицы 100 падала сnonexistent directory; заодно уточнено предупреждение проip_forward.Проверено на собранном образе (
awg-dash:dev, 202 MB,sha256:47b38a6515…):awg --versionrc=0,ipset --versionrc=0 (с NET_ADMIN),amneziawg-go --versionrc=0, HEALTHCHECK в манифесте, без NET_ADMIN — явный FATAL rc=1, с NET_ADMIN preflight проходит. Детали — в комментарии к issue #18.Гейты: сборка ✓, размер ✓, поведение без NET_ADMIN ✓. Остаётся CI (#17) и ревью владельца роли. Мержить после #47 (PR #49 standalone не собирается).
⏸ Работы приостановлены владельцем (29.10.2026 ~22:55 MSK)
Фиксирую фактическое состояние ветки, чтобы возобновление было с нуля догадок.
Что уже в
main(влито мной по поручению владельца)contract-openapiпереведён на archive-fallback, все 4 статуса зелёныеmainпоявились.gitea/workflows/ci.yml+docs/ci/; все 16 статусов зелёныеmain=19f0526. CI-гейты теперь репозиторные (любая новая ветка получает lint/unit+coverage/security).Состояние этого PR
b69c3b6, базаmain@19f0526,mergeable: true, 4 файла (deploy/Dockerfile,deploy/entrypoint.sh,deploy/awg0.conf.example+requirements.txt).build— зелёный на живом раннере (run 81/89:docker build→staging-<sha>, ~200–227 MB).image-scan— красный, но состав находок сжат с 22 (21 HIGH + 1 CRITICAL) до 5 HIGH и причина каждого шага установлена (см. #61).push— не запускается, покаimage-scanкрасный (fail-closed); нужен репо-секретREGISTRY_TOKEN(write:package) — действие владельца.b69c3b6(удаление pip из runtime) не прогнан — раннер остановлен до возобновления работ.Что проверить при возобновлении (порядок)
ssh root@192.168.1.147 'docker start gitea-runner-awg-repo'— раннер был остановлен командой владельца.rerunrun для shab69c3b6(или push) → ждатьbuild→image-scan.image-scanзелёный (все 5 находок были вендоренными пакетами pip, pip из образа удалён). Если появились новые — смотретьget_job_log_preview.image-scan— мерж PR (DoD: CI green + ревьюdevops), затем закрытие #18 и карточкиt_af973267.Ветки
feat/17-verify,probe/artifact-v4,ci/17-gate-negativeне удалял — снимаются после закрытия #17/#62.View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.