v0.5.0 kept an X-Cashu payment without refund when forwarding or settlement failed after redemption (an upstream timeout, a read error, an upstream error). Upstream #829 and #872 fix that, but no release is tagged after v0.5.0, so the image pins main at 8ce9ef69 (2026-10-24, upstream CI green), still by immutable commit with the frozen lock. Checked against the interfaces the node uses: unchanged, plus one additive migration. On a fake-Lightning test mint, starting on a copy of a v0.5.0 database: migrations run and settings and price carry over; an upstream timeout now returns all redeemed sats (424 with x-cashu) and saves them for claims; a buyer hanging up mid-request gets its change saved. A Routstr restart mid-request still saves nothing (claims stay "pending"), recorded for an upstream report. App 0.5.0-archy2, image localhost/archy-routstr:0.5.0-archy2. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
39 lines
1.9 KiB
Docker
39 lines
1.9 KiB
Docker
# Candidate package: lifecycle and paid-provider acceptance remain pending.
|
|
# Source is immutable; the base image is pinned by multi-arch index digest.
|
|
FROM ghcr.io/astral-sh/uv:python3.14-bookworm-slim@sha256:7cf77f594be8042dab6daa9fe326f90962252268b4f120a7f5dccce4d947e6c1
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
git build-essential pkg-config libffi-dev libsecp256k1-dev \
|
|
autoconf automake libtool \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /opt/routstr
|
|
# Routstr Core main at 8ce9ef69 (2026-10-24): v0.5.0 plus 87 commits, among
|
|
# them the X-Cashu refunds on upstream failure (#829, #872). No release is
|
|
# tagged after v0.5.0 yet. Do not substitute latest or a moving branch.
|
|
RUN git init . \
|
|
&& git remote add origin https://github.com/Routstr/routstr-core.git \
|
|
&& git fetch --depth 1 origin 8ce9ef69fc1b5ecd6f92f1baf54d8c2620ea0e89 \
|
|
&& git checkout --detach FETCH_HEAD \
|
|
&& test "$(git rev-parse HEAD)" = 8ce9ef69fc1b5ecd6f92f1baf54d8c2620ea0e89 \
|
|
&& uv sync --frozen --no-dev --no-install-project \
|
|
&& rm -rf .git
|
|
# alembic.ini's script_location is cwd-relative, but cwd is /data below.
|
|
RUN sed -i 's|^script_location = migrations$|script_location = %(here)s/migrations|' alembic.ini \
|
|
&& grep -qx 'script_location = %(here)s/migrations' alembic.ini
|
|
|
|
ENV PYTHONPATH=/opt/routstr \
|
|
PYTHONDONTWRITEBYTECODE=1 \
|
|
PYTHONUNBUFFERED=1 \
|
|
GIT_COMMIT=8ce9ef69fc1b5ecd6f92f1baf54d8c2620ea0e89 \
|
|
GIT_TAG=
|
|
|
|
# Upstream's .wallet and logs paths are relative to cwd. Keep them beside
|
|
# keys.db and the encryption key, not on the read-only application filesystem.
|
|
WORKDIR /data
|
|
EXPOSE 8000
|
|
# Starts uvicorn, then applies the node wallet's mints/payout address and the
|
|
# install-default model price through Routstr's own admin API.
|
|
COPY archy-start.py /opt/archy/archy-start.py
|
|
CMD ["/opt/routstr/.venv/bin/python", "/opt/archy/archy-start.py"]
|