File size: 1,466 Bytes
16f1328
 
 
 
 
bf9c466
16f1328
 
44c37db
 
bf9c466
 
 
 
16f1328
 
 
 
 
bf9c466
16f1328
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bf9c466
c0eec19
 
16f1328
 
 
 
 
 
f62843f
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
FROM debian:bookworm-slim

WORKDIR /app

RUN apt-get update && apt-get install -y --no-install-recommends \
    bash ca-certificates clang curl git libgmp-dev nodejs npm \
    && rm -rf /var/lib/apt/lists/*

RUN npm install -g tsx typescript

RUN curl -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal \
    && /root/.cargo/bin/rustup default stable \
    && /root/.cargo/bin/cargo --version

RUN curl -sSf https://raw.githubusercontent.com/leanprover/elan/master/elan-init.sh \
    | sh -s -- -y --default-toolchain none

COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/

ENV PATH="/root/.cargo/bin:/root/.elan/bin:$PATH" \
    LEAN_BIN=/root/.elan/bin/lean \
    LEAN_CWD=/app/env/lean \
    LEAN_PATH=/app/env/lean/.lake/build/lib \
    PYTHONPATH=/app/env \
    UV_LINK_MODE=copy \
    UV_COMPILE_BYTECODE=1

COPY lean/lean-toolchain /app/env/lean/lean-toolchain

RUN elan default "$(cat /app/env/lean/lean-toolchain)" \
    && lean --version

COPY . /app/env

WORKDIR /app/env/lean

RUN lake build AuthSpec PricingSpec SagaSpec

WORKDIR /app/env
RUN uv sync --locked

ENV PATH="/app/env/.venv/bin:/root/.cargo/bin:/root/.elan/bin:$PATH" \
    VIRTUAL_ENV=/app/env/.venv

EXPOSE 8000

HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
    CMD curl -f http://localhost:8000/health || exit 1

ENV ENABLE_WEB_INTERFACE=true
CMD ["sh", "-c", "cd /app/env && uv run uvicorn lean_migrate.server.app:app --host 0.0.0.0 --port 8000"]