# ── Стадия 1: кэш зависимостей ────────────────────────────────────────────── FROM denoland/deno:alpine-2.2.3 AS deps WORKDIR /app # Копируем только файлы, влияющие на зависимости COPY deno.json deno.lock* ./ COPY mod.ts lib.ts ui.ts proxy.ts ./ # Прогреваем кэш Deno (скачивает и компилирует все импорты) RUN deno cache mod.ts # ── Стадия 2: финальный образ ──────────────────────────────────────────────── FROM denoland/deno:alpine-2.2.3 WORKDIR /app # Копируем прогретый кэш из предыдущей стадии COPY --from=deps /deno-dir /deno-dir # Копируем весь проект COPY . . # Порт по умолчанию (можно переопределить через ENV PORT=...) ENV PORT=8000 EXPOSE ${PORT} # Переменные для HTTP-прокси (задаются при запуске контейнера) # Пример: docker run -e HTTPS_PROXY=http://host:port ... ENV HTTPS_PROXY="" ENV HTTP_PROXY="" ENV NO_PROXY="localhost,127.0.0.1" CMD ["run", "--allow-net", "--allow-env", "--allow-read", "mod.ts"]