Gate 0.1.0: eigen image, het command-blok is een script, de app-map is leeg
Plan Eigenimage, fase 1 tot en met 3. De vier templates verhuizen naar tools/electrum-gate/ zonder extensie; daarnaast Dockerfile (nginx:1.30-alpine plus python3), entrypoint.sh (het command-blok van de compose, zonder $$) en build.sh naar het voorbeeld van Evolu Relay. Een image voor beide containers, gebouwd op de Umbrel; open punt 2 en 3 daarmee beslist. Inhoudelijk anders dan alleen verplaatst: het log_format staat in stream.conf zelf, het backend-adres komt via twee plaatshouders zonder dollarteken uit de omgeving (ook in de server-service), en de pagina haalt versie en adres uit status.json via GATE_APP_VERSION. Tests mee verhuisd en uitgebreid: entrypoint.sh en Dockerfile in plaats van het command-blok, en de tag in de compose gelijk aan VERSION in build.sh voor elke eigen image. Mutatie-getest met drie ingrepen. Nog niet gebouwd: er is hier geen Docker. De tag staat ongepind tot de eerste push; dat is fase 4 en die is van de gebruiker. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
7b3804df89
commit
973b24a23f
@@ -0,0 +1,54 @@
|
||||
# ═══════════════════════════════════════════════════════════════════════════════
|
||||
# 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"]
|
||||
Reference in New Issue
Block a user