The Alliance Research Indicators client ships with a multi-stageDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/AllianceBioversityCIAT/alliance-research-indicators-client/llms.txt
Use this file to discover all available pages before exploring further.
Dockerfile and a docker-compose.yml that give you a containerized path from source to a production-equivalent Nginx-served bundle. This is useful for validating production builds, testing in a clean environment, or handing off a deployment artifact.
All Docker commands are run from the research-indicators/ directory.
The Dockerfile: three stages
TheDockerfile at research-indicators/Dockerfile has three named stages:
| Stage | Base image | What it does |
|---|---|---|
build | node:20-alpine | Installs all npm dependencies with npm ci, then runs ng build to produce dist/research-indicators/browser/ |
test | node:20-alpine | Copies the full build workspace so tests can run against the compiled output in CI |
| Production (default) | nginx:alpine | Copies only the compiled browser assets from the build stage into Nginx’s web root — no Node.js, no source code, no node_modules in the final image |
The
build stage uses node:20-alpine, which mirrors the Node 20.x requirement for local development. If your machine uses a different Node major version, the Docker build ensures your deployment artifact is always compiled against Node 20 regardless.Nginx configuration
The customnginx.conf at research-indicators/nginx.conf configures a single virtual host on port 80 with SPA routing support:
try_files $uri $uri/ /index.html. Because the application uses the Angular Router with HTML5 pushState URLs, any path that does not map to a static file (for example /results/123 or /dashboard) must fall back to index.html so Angular can handle the route client-side. Without this, deep-linking to any route other than / would return a 404 from Nginx.
Docker Compose profiles
Thedocker-compose.yml defines a single named service (dev) that is used for both the development and production compose profiles via the corresponding npm scripts.
ports entry if 4200 is occupied.
Starting the containers
docker-compose up <profile> -d, building the image if it does not already exist and starting the container in detached mode.
Building a standalone image
If you need to build and tag the image without Compose — for example to push it to a registry:Individual Docker commands
The following npm scripts are also available for ad-hoc container management:| Script | Command | Description |
|---|---|---|
docker:build | npm run docker:build | Build the Docker image and tag it research_indicatiors_client |
docker:run | npm run docker:run | Run the built image with an env-file, mapping host 4200 → container 4200 |
docker:stop | npm run docker:stop | Stop and remove the named container |
docker:logs | npm run docker:logs | Stream container logs |
docker:exec | npm run docker:exec | Open an interactive bash shell in the running container |