Files
bracket/Dockerfile
dependabot[bot] b766b2eab9 Bump node from 24-alpine to 25-alpine (#1500)
Bumps node from 24-alpine to 25-alpine.


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=node&package-manager=docker&previous-version=24-alpine&new-version=25-alpine)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-31 13:18:09 +00:00

53 lines
1.1 KiB
Docker

# Build static frontend files
FROM node:25-alpine AS builder
WORKDIR /app
ENV NODE_ENV=production
COPY frontend .
RUN corepack enable && \
CI=true pnpm install && \
VITE_API_BASE_URL=http://localhost:8400/api pnpm build
# Build backend image that also serves frontend (stored in `/app/frontend-dist`)
FROM python:3.14-alpine3.22
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
RUN rm -rf /var/cache/apk/*
COPY backend /app
WORKDIR /app
# -- Install dependencies:
RUN addgroup --system bracket && \
adduser --system bracket --ingroup bracket && \
chown -R bracket:bracket /app
USER bracket
RUN uv sync --no-dev --locked
COPY --from=builder /app/dist /app/frontend-dist
EXPOSE 8400
HEALTHCHECK --interval=3s --timeout=5s --retries=10 \
CMD ["wget", "-O", "/dev/null", "http://0.0.0.0:8400/ping"]
CMD [ \
"uv", \
"run", \
"--no-dev", \
"--locked", \
"--", \
"gunicorn", \
"-k", \
"uvicorn.workers.UvicornWorker", \
"bracket.app:app", \
"--bind", \
"0.0.0.0:8400", \
"--workers", \
"1" \
]