# Wheels are pre-built (examples/build-wheels.sh) rather than fetched from PyPI — neither
# papeete-actor nor papeete-actor-message is published there yet. Once they are, this collapses
# to `RUN pip install papeete-actor-synchronous-messaging-github-issues` and the wheels/ folder
# goes away; nothing else about this file changes.
#
# papeete-observability (a sibling repo, its own wheel alongside these four) is what turns
# app.py's `configure()` call into a real OTLP exporter — see this repo's observability plan.
#
# NO `RUN describe . > card.yaml` HERE, unlike the HTTP examples' own Dockerfile — that step
# baked a card for a `GET /card` route this binding has no listening socket to serve one from
# (see app.py's own docstring). A human wanting this actor's composed card still runs
# `papeete-actor-synchronous-messaging describe .` against a checkout.
FROM python:3.12-slim
WORKDIR /app
COPY wheels/*.whl /tmp/wheels/
RUN pip install --no-cache-dir /tmp/wheels/*.whl && rm -rf /tmp/wheels
COPY actor.yaml actor-data.yaml actor-message.yaml actor-synchronous-messaging.yaml app.py order_book.py ./
# No EXPOSE — this actor never listens. It only ever makes outbound REST calls to GitHub's API.
CMD ["python", "app.py"]
