# 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 — see
# ../waiter/Dockerfile's own note; there is no listening socket to serve a `GET /card` from.
# `trigger.py` ships alongside `app.py` here rather than in a third file — it is this image's
# one-shot alternate entrypoint, not a second actor.
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 trigger.py decide.py ./
# No EXPOSE — this actor never listens. It only ever makes outbound REST calls to GitHub's API.
CMD ["python", "app.py"]
