Use a suitable official Docker installation and check its current terms for your environment.
In this dedicated folder:
docker build -t wikifree-juniper-practice .
docker run --name wikifree-juniper-practice -p 127.0.0.1:8080:8080 -e APP_LABEL="Juniper learning demo" wikifree-juniper-practice
In another terminal: curl http://127.0.0.1:8080/health
Expected JSON: {"ok":true,"label":"Juniper learning demo"}
Stop with Ctrl+C, then remove only the named stopped practice container when finished: docker rm wikifree-juniper-practice
Compose alternative: docker compose up --build; when finished, docker compose down in this project folder.
The official base tag is a teaching choice, not a digest-pinned production dependency. Record the tag/digest and versions actually used. A rebuild does not replace an already running container automatically.
The service listens on all interfaces INSIDE the container, while the host mapping is loopback only. It has no persistent data, authentication or production deployment claim. Publishing QA distinguishes local Node response checks from an actual Docker build/run.
