Files
beanflows/Dockerfile
Deeman b5fae9d528
Some checks failed
CI / test-cli (push) Failing after 7s
CI / test-sqlmesh (push) Failing after 6s
CI / test-web (push) Failing after 6s
CI / tag (push) Has been skipped
fix(docker): use python:3.13-slim base image, switch hypercorn → granian
2026-02-28 23:52:00 +01:00

35 lines
1.3 KiB
Docker

# CSS build stage (Tailwind standalone CLI, no Node.js)
FROM debian:bookworm-slim AS css-build
ADD https://github.com/tailwindlabs/tailwindcss/releases/latest/download/tailwindcss-linux-x64 /usr/local/bin/tailwindcss
RUN chmod +x /usr/local/bin/tailwindcss
WORKDIR /app
COPY web/src/ ./web/src/
RUN tailwindcss -i ./web/src/beanflows/static/css/input.css \
-o ./web/src/beanflows/static/css/output.css --minify
# Build stage
FROM python:3.13-slim AS build
COPY --from=ghcr.io/astral-sh/uv:0.8 /uv /uvx /bin/
WORKDIR /app
ENV UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy
COPY uv.lock pyproject.toml README.md ./
COPY web/pyproject.toml web/README.md ./web/
COPY web/src/ ./web/src/
RUN --mount=type=cache,target=/root/.cache/uv \
uv sync --no-dev --frozen --package beanflows
# Runtime stage
FROM python:3.13-slim AS runtime
ENV PATH="/app/.venv/bin:$PATH"
RUN useradd -m -u 1000 appuser
WORKDIR /app
RUN mkdir -p /app/data && chown -R appuser:appuser /app
COPY --from=build --chown=appuser:appuser /app .
COPY --from=css-build /app/web/src/beanflows/static/css/output.css ./web/src/beanflows/static/css/output.css
USER appuser
ENV PYTHONUNBUFFERED=1
ENV DATABASE_PATH=/app/data/app.db
EXPOSE 5000
CMD ["granian", "--interface", "asgi", "--host", "0.0.0.0", "--port", "5000", "--workers", "1", "beanflows.app:app"]