Files

55 lines
3.1 KiB
Docker
Raw Permalink Normal View History

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