> ## Documentation Index
> Fetch the complete documentation index at: https://hmis-docs.derrickmugabwa.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Docker Desktop setup

> Run HMIS, OIE, Orthanc, OHIF, and the simulators as a local Compose stack.

Use Docker Desktop when validating the full laboratory or radiology workflow. The local override publishes services on loopback and mounts selected integration files for rapid iteration.

## Local endpoints

| Service                  | Address                  |
| ------------------------ | ------------------------ |
| HMIS                     | `http://localhost:8080`  |
| OIE HTTP administration  | `http://localhost:8081`  |
| OIE HTTPS administration | `https://localhost:8443` |
| Orthanc Explorer         | `http://localhost:8042`  |
| OHIF viewer              | `http://localhost:3000`  |
| Mock analyzer            | `http://localhost:8090`  |
| Mock modality            | `http://localhost:8091`  |

<Steps>
  <Step title="Create the local environment file">
    ```powershell theme={null}
    Copy-Item .env.example .env
    ```

    Set non-empty local-only values for these required Compose variables:

    ```dotenv theme={null}
    APP_KEY={{LOCAL_APP_KEY}}
    DB_DATABASE=hmis_local
    DB_USERNAME=hmis_local
    DB_PASSWORD={{LOCAL_HMIS_DB_PASSWORD}}
    OIE_DB_PASSWORD={{LOCAL_OIE_DB_PASSWORD}}
    OIE_KEYSTORE_STOREPASS={{LOCAL_OIE_STORE_PASSWORD}}
    OIE_KEYSTORE_KEYPASS={{LOCAL_OIE_KEY_PASSWORD}}
    ORTHANC_DB_PASSWORD={{LOCAL_ORTHANC_DB_PASSWORD}}
    ```
  </Step>

  <Step title="Render the Compose configuration">
    Validate interpolation before creating containers:

    ```powershell theme={null}
    docker compose -f docker-compose.yml -f docker-compose.local.yml config --quiet
    ```
  </Step>

  <Step title="Build and start the stack">
    ```powershell theme={null}
    docker compose -f docker-compose.yml -f docker-compose.local.yml up -d --build
    ```
  </Step>

  <Step title="Run migrations and development seeding">
    ```powershell theme={null}
    docker compose exec app php artisan migrate --force
    docker compose exec app php artisan db:seed --force
    ```

    The broad seeder is permitted here only because this is a disposable local environment.
  </Step>

  <Step title="Check service state">
    ```powershell theme={null}
    docker compose -f docker-compose.yml -f docker-compose.local.yml ps
    docker compose exec app php artisan about --only=environment
    docker compose exec app php artisan schedule:list
    ```
  </Step>
</Steps>

## Apply source changes

The local override mounts selected integration files, not the entire application. Rebuild `app`, `queue`, and `scheduler` when other PHP or frontend files change:

```powershell theme={null}
docker compose -f docker-compose.yml -f docker-compose.local.yml up -d --build app queue scheduler
```

## Stop or remove the stack

Stop containers while preserving data:

```powershell theme={null}
docker compose -f docker-compose.yml -f docker-compose.local.yml down
```

<Warning>
  The following command permanently deletes all local HMIS, OIE, and Orthanc volumes. Confirm that the Compose project contains no required data before running it.
</Warning>

```powershell theme={null}
docker compose -f docker-compose.yml -f docker-compose.local.yml down --volumes
```

## Local-only security boundary

The local override binds administration, PACS, DICOM, and simulator endpoints to `127.0.0.1`. Do not change these bindings to `0.0.0.0` on a shared network. The demonstration Orthanc configuration does not provide production authentication controls.

Continue with the [laboratory integration](/laboratory-integration/integration-context) or [radiology integration](/radiology-integration/architecture) guides.
