55 lines
3.1 KiB
Docker
55 lines
3.1 KiB
Docker
# ═══════════════════════════════════════════════════════════════════════════════
|
|||
|
|
# 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"]
|