lean-migrate / Dockerfile
Hrushi's picture
Upload folder using huggingface_hub
bf9c466 verified
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"]