How to Manage Docker Containers in Project N.O.M.A.D.: Start, Stop, Restart, and Update

To manage Docker containers in Project N.O.M.A.D., use the helper scripts start_nomad.sh, stop_nomad.sh, and update_nomad.sh located in the install/ directory, which wrap Docker CLI commands to control the nomad_-prefixed container stack.

Project N.O.M.A.D. from Crosstalk-Solutions/project-nomad deploys every component—including the admin UI, Dozzle, MySQL, Redis, and the updater—as Docker containers defined in install/management_compose.yaml. Understanding how to manage Docker containers in Project N.O.M.A.D. ensures you can maintain uptime, apply updates, and troubleshoot the stack without memorizing complex Docker commands.

Understanding the Container Architecture

All Project N.O.M.A.D. services run under a unified Docker Compose project named project-nomad, which isolates the stack from other containerized applications on the host. The compose file enforces a restart: unless-stopped policy, ensuring containers automatically restart after a host reboot unless explicitly stopped.

Containers follow a strict naming convention with the nomad_ prefix. Examples include:

  • nomad_admin (main web interface)
  • nomad_mysql (database)
  • nomad_redis (caching layer)
  • nomad_updater (sidecar update service)

Starting Docker Containers in Project N.O.M.A.D.

Using the Start Script

The install/start_nomad.sh script provides a reliable way to bring up the entire stack. It queries Docker for all containers matching the nomad_ prefix—regardless of their current state—and executes docker start on each.

bash /opt/project-nomad/start_nomad.sh

If no containers exist, the script outputs: "No containers found for Project N.O.M.A.D. Is it installed?" This prevents confusion when the stack has not been initialized.

Stopping Docker Containers in Project N.O.M.A.D.

Graceful Shutdown with stop_nomad.sh

To stop services gracefully, use install/stop_nomad.sh. This script identifies only running containers with the nomad_ prefix and issues docker stop to each, allowing processes to terminate cleanly rather than forcing an immediate kill.

bash /opt/project-nomad/stop_nomad.sh

The script exits silently when no containers are running, making it safe to run idempotently in automation scripts.

Restarting Docker Containers in Project N.O.M.A.D.

Manual Container Restart

For quick restarts of individual services without recreating containers, use the standard Docker CLI:

docker restart nomad_admin

Full Stack Recreation

To restart the entire stack with fresh container instances—useful after configuration changes—use Docker Compose with the --force-recreate flag:

docker compose -p project-nomad -f /opt/project-nomad/compose.yml up -d --force-recreate

The restart: unless-stopped policy in management_compose.yaml also ensures that containers automatically restart after a system reboot, provided they were not manually stopped before the shutdown.

Updating Docker Containers in Project N.O.M.A.D.

Automated Update Process

The install/update_nomad.sh script handles the complete update lifecycle: pulling latest images, recreating containers, and preserving persistent data volumes.

The script performs the following steps:

  1. Validates that Docker is installed and the Docker daemon is running.
  2. Verifies the compose file exists at /opt/project-nomad/compose.yml.
  3. Executes docker compose pull to download the latest image versions.
  4. Runs docker compose up -d --force-recreate to replace running containers while maintaining volumes (e.g., MySQL data in nomad_mysql).
bash /opt/project-nomad/update_nomad.sh

Upon successful completion, the script displays: "Project N.O.M.A.D installation completed successfully!" If any step fails, the script aborts immediately to prevent partial updates.

Summary

  • Container Naming: All Project N.O.M.A.D. containers use the nomad_ prefix (e.g., nomad_admin, nomad_mysql).
  • Management Scripts: Use start_nomad.sh, stop_nomad.sh, and update_nomad.sh from the install/ directory for standard operations.
  • Compose Project: The stack runs under the isolated project name project-nomad defined in install/management_compose.yaml.
  • Persistence: Updates via update_nomad.sh preserve data volumes, ensuring MySQL and Redis data survive container recreation.
  • Auto-Restart: The restart: unless-stopped policy ensures services resume automatically after host reboots.

Frequently Asked Questions

Where are the Docker container management scripts located in Project N.O.M.A.D.?

The management scripts are located in the install/ directory of the repository. After installation, they are typically deployed to /opt/project-nomad/ on the host system. The three primary scripts are start_nomad.sh, stop_nomad.sh, and update_nomad.sh.

What is the naming convention for Project N.O.M.A.D. Docker containers?

All containers use the nomad_ prefix followed by the service name. For example, the administrative interface runs in nomad_admin, the database in nomad_mysql, and the caching layer in nomad_redis. This naming convention allows the management scripts to identify and target Project N.O.M.A.D. containers specifically.

How does Project N.O.M.A.D. handle automatic restarts after a system reboot?

The install/management_compose.yaml file specifies restart: unless-stopped for all services. This Docker policy automatically restarts containers when the Docker daemon starts (such as after a host reboot), unless the container was explicitly stopped manually using stop_nomad.sh or docker stop.

Will updating Project N.O.M.A.D. containers delete my MySQL or Redis data?

No. The update_nomad.sh script uses docker compose up -d --force-recreate, which replaces container instances while preserving named volumes. Both MySQL and Redis data are stored in Docker volumes attached to nomad_mysql and nomad_redis respectively, ensuring persistent data survives the update process.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →