release: v0.8.31
UniFi's reparatiecontainer mount de stackmap in plaats van het losse script, zodat Docker er geen lege map van kan maken en exit 126 niet meer voorkomt. Bevat ook de snellere image-build. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H9Vcwu7owJZ3nj5dCf4VFT
This commit is contained in:
parent
14515143fc
commit
7db20467cf
5 changed files with 35 additions and 13 deletions
17
CHANGELOG.md
17
CHANGELOG.md
|
|
@ -1,4 +1,19 @@
|
|||
# v0.8.31-beta — Bouwen duurt geen kwartier meer
|
||||
# v0.8.31 — UniFi's reparatiescript kan niet meer zoekraken
|
||||
|
||||
`exit 126` bij `unifi-mongo-init`: het compose-bestand mountte het losse
|
||||
bestand `./init-mongo.sh`, en als dat (nog) niet in de stackmap staat maakt
|
||||
Docker er stilzwijgend een lege map van. Bash zegt dan "Is a directory", de
|
||||
container stopt met een kaal exit-nummer, en het bleef zo — want ook het
|
||||
opnieuw renderen struikelde over diezelfde map.
|
||||
|
||||
- **De hele stackmap wordt gemount in plaats van het losse bestand.** Die map
|
||||
bestaat altijd, dus Docker kan er niets meer bij verzinnen. Ontbreekt het
|
||||
script toch, dan zegt de container wat je eraan doet in plaats van 126.
|
||||
- **Een lege map op de plek van een bestand wordt bij het renderen opgeruimd**,
|
||||
zodat 'Instellingen wijzigen → opslaan' het probleem oplost in plaats van er
|
||||
zelf op vast te lopen.
|
||||
|
||||
Verder in deze uitgave: bouwen duurt geen kwartier meer.
|
||||
|
||||
De volgorde in de Dockerfile bepaalt hoeveel er bij elke build opnieuw moet.
|
||||
`ARG SU_VERSION` stond met een LABEL erachter bovenaan, en die waarde verandert
|
||||
|
|
|
|||
2
VERSION
2
VERSION
|
|
@ -1 +1 @@
|
|||
0.8.31-beta
|
||||
0.8.31
|
||||
|
|
|
|||
|
|
@ -76,25 +76,25 @@ services:
|
|||
- MONGO_DBNAME=unifi
|
||||
- MONGO_AUTHSOURCE=admin
|
||||
volumes:
|
||||
- ./init-mongo.sh:/init-mongo.sh:ro
|
||||
# De hele stackmap en niet het losse script. Een bind-mount naar een
|
||||
# bestand dat (nog) niet bestaat laat Docker stilzwijgend een lege map
|
||||
# aanmaken; de container stopt dan met "exit 126 — Is a directory" en
|
||||
# blijft dat doen. Een map die er altijd is, kan dat niet overkomen.
|
||||
- ./:/su-stack:ro
|
||||
# Dezelfde map als UniFi zelf: hierin staat system.properties, dat het
|
||||
# image alleen bij de allereerste start schrijft.
|
||||
- << appdata_dir >>/<< service_name >>/config:/unifi-config
|
||||
# Eerst kijken óf het script er is. Ontbreekt het in de stackmap, dan mount
|
||||
# Docker er een lege map overheen en stopt de container met "exit 126" —
|
||||
# een getal waar niemand iets aan heeft. Nu staat er wat je eraan doet.
|
||||
entrypoint:
|
||||
- /bin/bash
|
||||
- -c
|
||||
- |
|
||||
if [ ! -f /init-mongo.sh ]; then
|
||||
echo "FOUT: /init-mongo.sh ontbreekt in de stackmap van deze app."
|
||||
echo "Docker heeft er daarom een lege map van gemaakt."
|
||||
if [ ! -f /su-stack/init-mongo.sh ]; then
|
||||
echo "FOUT: init-mongo.sh ontbreekt in de stackmap van deze app."
|
||||
echo "Herstel het met: Instellingen wijzigen -> opslaan, dan wordt"
|
||||
echo "het sjabloon opnieuw uitgeschreven."
|
||||
exit 1
|
||||
fi
|
||||
exec bash /init-mongo.sh
|
||||
exec bash /su-stack/init-mongo.sh
|
||||
depends_on:
|
||||
<< service_name >>-mongo:
|
||||
condition: service_healthy
|
||||
|
|
|
|||
|
|
@ -415,7 +415,11 @@ def test_unifi_heeft_pi_geschikte_en_correct_geinitialiseerde_mongodb():
|
|||
"service_completed_successfully"
|
||||
assert reparatie["depends_on"]["unifi-mongo"]["condition"] == "service_healthy"
|
||||
assert reparatie["restart"] == "no"
|
||||
assert "./init-mongo.sh:/init-mongo.sh:ro" in reparatie["volumes"]
|
||||
# De hele map en niet het losse bestand: een bind-mount naar een bestand
|
||||
# dat nog niet bestaat laat Docker een lege map aanmaken, en dan stopt de
|
||||
# container met exit 126 zonder dat iets uitlegt waarom.
|
||||
assert "./:/su-stack:ro" in reparatie["volumes"]
|
||||
assert not any(v.startswith("./init-mongo.sh:") for v in reparatie["volumes"])
|
||||
assert any(v == "MONGO_HOST=unifi-mongo" for v in reparatie["environment"])
|
||||
# De beheerdersnaam van het allereerste sjabloon. Een volume van toen kent
|
||||
# geen 'root', en dan mislukte elke reparatie én elke mongodump.
|
||||
|
|
|
|||
|
|
@ -238,6 +238,9 @@ def test_unifi_init_zegt_wat_er_mis_is_in_plaats_van_exit_126():
|
|||
"""Een ontbrekend script gaf 'exit 126' — een getal waar niemand iets aan
|
||||
heeft. De container hoort te vertellen wat je eraan doet."""
|
||||
bron = (WORTEL / "apps" / "unifi-network" / "files" / "compose.yaml").read_text("utf-8")
|
||||
assert "if [ ! -f /init-mongo.sh ]" in bron
|
||||
assert "if [ ! -f /su-stack/init-mongo.sh ]" in bron
|
||||
assert "Instellingen wijzigen" in bron
|
||||
assert "exec bash /init-mongo.sh" in bron
|
||||
assert "exec bash /su-stack/init-mongo.sh" in bron
|
||||
# En het script wordt via de map gemount, zodat Docker er geen lege map
|
||||
# van kan maken.
|
||||
assert "./:/su-stack:ro" in bron
|
||||
|
|
|
|||
Loading…
Reference in a new issue