Files
netrunner-proxy/Dockerfile
T
nineap d1bb4661d1
Build & Push Proxy Image / build (push) Successful in 4m51s
Fix: образ netrunner-proxy падал в рестарт-луп — GLIBC_2.38 not found
Dockerfile просто копировал бинарник, собранный ОТДЕЛЬНЫМ шагом прямо на
CI-раннере (ubuntu-24.04, glibc 2.39), в рантайм-образ debian:bookworm-slim
(glibc 2.36) — любой запуск падал: "GLIBC_2.38 not found". Затронуто
абсолютно любое развёртывание этого образа, не конкретная нода.

Теперь Dockerfile компилирует Rust ВНУТРИ себя, на том же bookworm, что и
рантайм (multi-stage + cargo-chef, тот же паттерн, что в
netrunner-backend/Dockerfile) — версии glibc гарантированно совпадают
независимо от ОС раннера. build.yml больше не собирает бинарник отдельным
шагом, только docker build; добавлен registry-кэш слоёв (type=gha требует
GitHub Actions Cache, у self-hosted act_runner его нет — см. аналогичный
фикс в netrunner-backend этой сессии).

Проверено локально: docker build проходит чисто, ./netrunner-proxy --help
запускается без ошибок glibc (до фикса — падал сразу).
2026-07-11 04:15:16 +07:00

37 lines
1.5 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# syntax=docker/dockerfile:1.7
# Раньше этот Dockerfile просто копировал уже собранный на CI-раннере
# бинарник (target/release/netrunner-server) в debian:bookworm-slim — а
# раннер (ubuntu-24.04, glibc 2.39) собирал его с более новым glibc, чем
# несёт bookworm-slim (glibc 2.36). В рантайме это падало циклом рестартов:
# "GLIBC_2.38 not found". Компилируем внутри контейнера на той же базе
# (bookworm), что и рантайм — версии glibc гарантированно совпадают,
# независимо от того, какая ОС у раннера CI (см. тот же паттерн в
# netrunner-backend/Dockerfile).
FROM rust:1-bookworm AS chef
RUN cargo install cargo-chef --locked
WORKDIR /app
FROM chef AS planner
COPY . .
RUN cargo chef prepare --recipe-path recipe.json
FROM chef AS builder
COPY --from=planner /app/recipe.json recipe.json
RUN cargo chef cook --release --recipe-path recipe.json -p netrunner-server
COPY . .
RUN cargo build --release -p netrunner-server
FROM debian:bookworm-slim
WORKDIR /app
# Ставим системные сертификаты, чтобы прокси мог работать с сетью по HTTPS
RUN apt-get update && apt-get install -y ca-certificates libssl3 && rm -rf /var/lib/apt/lists/*
COPY --from=builder /app/target/release/netrunner-server /app/netrunner-proxy
EXPOSE 443/udp
EXPOSE 443/tcp
CMD ["./netrunner-proxy"]