# ═══════════════════════════════════════════════════════════════════════════════
#  De image voor de app whatsnext-electrum-gate.
#
#  Eén image voor twee containers. De compose start hem twee keer: als `server`
#  met het standaardcommando (entrypoint.sh, dat nginx wordt) en als `agent` met
#  `python3 /app/agent.py`. Twee images was netter gescheiden geweest, maar het
#  verdubbelt het bouw- en pinwerk, en nginx plus python3 in één alpine is klein.
#  Beslist bij de start van het plan Eigenimage, OPEN.md punt 2.
#
#  Tot 0.0.29 stonden deze bestanden als *.template in de app-map en draaiden ze
#  op python:3-alpine en nginx:alpine. Wat dat kostte staat in het plan
#  Eigenimage, PLAN.md §3; het kortste antwoord: het command-blok van de compose
#  was ruim honderd regels shell in een YAML-string met verdubbelde dollartekens,
#  en dat is nu een gewoon script.
#
#  De bouwcontext is de REPO-ROOT, niet deze map. Dat is omdat icon.png in de
#  app-map blijft staan (het manifest wijst ernaar voor de tegel in de winkel) en
#  de pagina hem óók nodig heeft; kopiëren uit de app-map voorkomt een tweede
#  exemplaar dat stil achterloopt. build.sh geeft die context mee.
# ═══════════════════════════════════════════════════════════════════════════════

# nginx en niet python als basis: de officiële nginx-image heeft de stream-module
# ingebouwd, en op alpine's eigen nginx-pakket is dat een los pakket. De app draaide
# al op nginx:alpine, dus dit houdt nginx precies zoals hij was. De tag is de
# stable-reeks (even tweede cijfer); zie Docs/Referenties/Images-pinnen.md.
FROM nginx:1.30-alpine

# De agent gebruikt alleen de standaardbibliotheek, inclusief ssl; dat zit in het
# python3-pakket van alpine.
RUN apk add --no-cache python3

COPY tools/electrum-gate/nginx.conf /etc/nginx/nginx.conf
# Met .in erachter, want dit is nog niet de configuratie die nginx leest: het
# backend-adres komt uit de omgeving en entrypoint.sh vult het bij het starten in.
COPY tools/electrum-gate/stream.conf /etc/nginx/stream.conf.in
COPY tools/electrum-gate/index.html /usr/share/nginx/html/index.html
COPY whatsnext-electrum-gate/icon.png /usr/share/nginx/html/icon.png
COPY tools/electrum-gate/agent.py /app/agent.py
COPY tools/electrum-gate/entrypoint.sh /entrypoint.sh

# De uitvoerbit hier zetten en niet vertrouwen op wat git meegeeft: de repo wordt
# ook op Windows bewerkt en daar bestaat die bit niet.
RUN chmod 0755 /entrypoint.sh

ENV PYTHONUNBUFFERED=1

EXPOSE 80 50022

# De nginx-image heeft een eigen entrypoint dat scripts uit /docker-entrypoint.d
# draait. Die doen hier niets nuttigs (envsubst op een templates-map die leeg is)
# en één ervan zou, als hij ooit wél iets deed, precies de fout maken waar dit
# project al een dag aan kwijt was. Weg ermee: het commando is het commando.
ENTRYPOINT []
CMD ["/entrypoint.sh"]
