diff --git a/Dockerfile b/Dockerfile index 3a21cd6..7395347 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM docker:27-cli AS dockercli +FROM docker:26-cli AS dockercli FROM python:3.12-slim-bookworm @@ -7,10 +7,28 @@ COPY --from=dockercli /usr/local/bin/docker /usr/local/bin/docker WORKDIR /app ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 +ENV DEBIAN_FRONTEND=noninteractive -RUN apt-get update \ - && apt-get install -y --no-install-recommends iptables iproute2 \ - && rm -rf /var/lib/apt/lists/* +# HTTP-зеркала иногда ломаются за прокси/кэшем → подпись InRelease «invalid». +# Чистим списки и переводим deb.debian.org / security на HTTPS перед update. +RUN set -eux; \ + apt-get clean; \ + rm -rf /var/lib/apt/lists/*; \ + if [ -f /etc/apt/sources.list ]; then \ + sed -i \ + -e 's|http://deb.debian.org|https://deb.debian.org|g' \ + -e 's|http://security.debian.org|https://security.debian.org|g' \ + /etc/apt/sources.list; \ + fi; \ + if [ -f /etc/apt/sources.list.d/debian.sources ]; then \ + sed -i \ + -e 's|http://deb.debian.org|https://deb.debian.org|g' \ + -e 's|http://security.debian.org|https://security.debian.org|g' \ + /etc/apt/sources.list.d/debian.sources; \ + fi; \ + apt-get -o Acquire::Retries=5 update; \ + apt-get install -y --no-install-recommends ca-certificates iptables iproute2; \ + rm -rf /var/lib/apt/lists/* COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt diff --git a/README.md b/README.md index da03b78..d036638 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,23 @@ - Linux с Docker (для NAT — предпочтительно host network + privileged). - Доступ к **`docker.sock`** на хосте (по умолчанию монтируется), чтобы в таблице «Сервисы» третья строка могла показывать статус **самого контейнера** как `kaskad-web.service`. +## Сборка образа: «invalid signature» / apt не подписан + +Чаще всего: **битый кэш Docker BuildKit**, **прокси по HTTP**, **место на диске**, **сбитые часы** на хосте. + +На хосте: + +```bash +date -u # время должно быть разумным +df -h /var/lib/docker # есть ли свободное место +docker builder prune -af # сбросить кэш сборки +docker build --pull --no-cache -t kaskad-web-vpn:test . +``` + +Если ошибка остаётся: временно отключите HTTP-прокси для сборки (`unset http_proxy https_proxy NO_PROXY`) или собирайте на другой сети. + +В образе списки APT по умолчанию переводятся на **HTTPS** (`deb.debian.org`, `security.debian.org`), чтобы обходить «порченые» HTTP-кэши. + ## Установка одной командой Порт **8088**, логин **user1**, пароль в **`/root/kaskad_web.initial-password`** (или задайте **`ADMIN_PASSWORD`**):