-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlinux_builds.Dockerfile
More file actions
61 lines (40 loc) · 1.74 KB
/
linux_builds.Dockerfile
File metadata and controls
61 lines (40 loc) · 1.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# uv-base содержит только бинарник uv
FROM ghcr.io/astral-sh/uv:latest AS uv-base
# сверх старый Debian (для совместимости с любым glibc)
FROM debian:10-slim AS builder-glibc
RUN echo "deb http://archive.debian.org/debian/ buster main" > /etc/apt/sources.list && \
echo "deb http://archive.debian.org/debian-security/ buster/updates main" >> /etc/apt/sources.list && \
apt-get -o Acquire::Check-Valid-Until=false update && \
apt-get install -y --no-install-recommends \
curl ca-certificates gcc libc6-dev patchelf bash && \
rm -rf /var/lib/apt/lists/*
COPY --from=uv-base /uv /bin/uv
WORKDIR /build
COPY morph_gen.py .
COPY compile.sh .
RUN chmod +x compile.sh
RUN uv venv .venv --python 3.13
ENV VIRTUAL_ENV=/build/.venv
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
RUN uv pip install nuitka pymorphy3 pymorphy3-dicts-ru pyyaml
# сборка glibc бинарника
RUN ./compile.sh /output/morph_gen_linux_x64_glibc
# старый Alpine (для совместимости со всеми musl)
FROM alpine:3.18 AS builder-musl
RUN apk add --no-cache gcc musl-dev libffi-dev patchelf bash
COPY --from=uv-base /uv /bin/uv
WORKDIR /build
COPY morph_gen.py .
COPY compile.sh .
RUN chmod +x compile.sh
RUN uv venv .venv --python 3.13
ENV VIRTUAL_ENV=/build/.venv
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
RUN uv pip install nuitka pymorphy3 pymorphy3-dicts-ru pyyaml
# сборка musl бинарника
RUN ./compile.sh /output/morph_gen_musl_x64
# вывод результатов
FROM scratch AS export
# копирование бинарников из двух стадий
COPY --from=builder-glibc /output/morph_gen_linux_x64_glibc /
COPY --from=builder-musl /output/morph_gen_musl_x64 /