# CMR Scanner — Docker / container image

> **Private registry** — a personal access token is required to pull this image.

## Getting a personal access token

1. Sign in to [git.araliasoftware.com](https://git.araliasoftware.com)
2. Go to **Settings → Applications → Access tokens**
3. Create a token with **`read:package`** scope
4. Copy and save the token — it is only shown once

## Authenticate

```bash
docker login git.araliasoftware.com \
  --username YOUR_USERNAME \
  --password YOUR_TOKEN
```

Your credentials are saved to `~/.docker/config.json`. You only need to do this once per machine.

## Pull the image

```bash
# PostgreSQL — default
docker pull git.araliasoftware.com/athan/cmr-scanner:latest

# Specific database provider
docker pull git.araliasoftware.com/athan/cmr-scanner:latest-mysql
docker pull git.araliasoftware.com/athan/cmr-scanner:latest-mariadb
docker pull git.araliasoftware.com/athan/cmr-scanner:latest-sqlserver

# Pinned version + provider
docker pull git.araliasoftware.com/athan/cmr-scanner:v1.2.0-postgresql
```

## Run

```bash
docker run -d \
  --name cmr-scanner \
  --restart unless-stopped \
  -p 3000:3000 \
  -e AUTH_SECRET="$(openssl rand -hex 32)" \
  -e AUTH_TRUST_HOST=true \
  -e AUTH_URL=https://cmrscanner.example.mil \
  -e PUBLIC_BASE_URL=https://cmrscanner.example.mil \
  -e DATABASE_PROVIDER=postgresql \
  -e DATABASE_URL="postgresql://cmrscanner:PASSWORD@db-host:5432/cmrscanner" \
  -e DOMAIN=cmrscanner.example.mil \
  -e ROOT_USER_NAME=root \
  -e ROOT_USER_PASSWORD=CHANGE_ME \
  -e NODE_ENV=production \
  git.araliasoftware.com/athan/cmr-scanner:latest
```

Or use an env file:

```bash
docker run -d \
  --name cmr-scanner \
  --restart unless-stopped \
  -p 3000:3000 \
  --env-file /etc/cmr-scanner/env \
  git.araliasoftware.com/athan/cmr-scanner:latest
```

## Run migrations

On first boot and after any update that includes schema changes:

```bash
docker run --rm \
  --env-file /etc/cmr-scanner/env \
  git.araliasoftware.com/athan/cmr-scanner:latest \
  node node_modules/.bin/prisma migrate deploy
```

## Updating

```bash
docker pull git.araliasoftware.com/athan/cmr-scanner:latest
docker stop cmr-scanner && docker rm cmr-scanner
# Run migrations first if the new version includes schema changes
docker run --rm --env-file /etc/cmr-scanner/env \
  git.araliasoftware.com/athan/cmr-scanner:latest \
  node node_modules/.bin/prisma migrate deploy
docker run -d ... git.araliasoftware.com/athan/cmr-scanner:latest
```

## Full deployment guide

See [DEPLOY.md](https://git.araliasoftware.com/athan/cmr-scanner/raw/branch/main/DEPLOY.md) for complete
configuration, database migration, NGINX reverse-proxy, and CAC/PIV smart-card setup instructions.
