# ═══════════════════════════════════════════════════════════════════════════════ # 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"]