# Docker Setup untuk Healthcare Admin Dashboard

## Deskripsi
File-file Docker ini memungkinkan Anda menjalankan aplikasi Nuxt 3 healthcare admin dashboard dalam kontainer Docker.

## File-file yang Dibuat

1. **Dockerfile** - Production-ready multistage build
2. **Dockerfile.dev** - Development Dockerfile dengan hot-reload
3. **docker-compose.yml** - Orchestration untuk production dan development
4. **.dockerignore** - Files yang akan diabaikan saat build

## Cara Penggunaan

### 1. Production Build & Run

#### Menggunakan Docker:
```bash
# Build image
docker build -t healthcare-app .

# Run container
docker run -p 3000:3000 \
  -e NODE_ENV=production \
  -e AUTH_ORIGIN=http://localhost:3005 \
  healthcare-app
```

#### Menggunakan Docker Compose:
```bash
# Build dan run
docker-compose up

# Run di background
docker-compose up -d

# Stop
docker-compose down
```

### 2. Development Mode

#### Menggunakan Docker Compose dengan dev profile:
```bash
# Run development container
docker-compose --profile dev up app-dev

# Run di background
docker-compose --profile dev up -d app-dev

# View logs
docker-compose --profile dev logs -f app-dev

# Stop
docker-compose --profile dev down
```

#### Menggunakan Docker Compose untuk development dengan hot-reload:
```bash
# Build dev image
docker build -f Dockerfile.dev -t healthcare-app-dev .

# Run dengan volume mounting untuk hot-reload
docker run -p 3030:3030 \
  -v $(pwd):/app \
  -v /app/node_modules \
  -e NODE_ENV=development \
  healthcare-app-dev
```

## Environment Variables

Konfigurasi environment variables sesuai kebutuhan:

- `NODE_ENV` - `production` atau `development` (default: production)
- `HOST` - Hostname untuk bind (default: 0.0.0.0)
- `PORT` - Port server (default: 3000 untuk production, 3030 untuk dev)
- `AUTH_ORIGIN` - URL auth server (default: http://localhost:3005)

### Mengatur Environment di docker-compose.yml:
```yaml
environment:
  - NODE_ENV=production
  - AUTH_ORIGIN=http://your-auth-server:3005
```

Atau melalui `.env` file:
```bash
# Create .env file di project root
echo "AUTH_ORIGIN=http://localhost:3005" > .env
```

## Build & Push ke Registry (Opsional)

```bash
# Build dengan tag
docker build -t your-registry/healthcare-app:latest .

# Push ke registry
docker push your-registry/healthcare-app:latest

# Run dari registry
docker run -p 3000:3000 your-registry/healthcare-app:latest
```

## Troubleshooting

### Container gagal start
```bash
# Check logs
docker logs <container-id>

# Run dengan interactive terminal
docker run -it -p 3000:3000 healthcare-app sh
```

### Port sudah terpakai
```bash
# Gunakan port yang berbeda
docker run -p 8000:3000 healthcare-app
```

### Hot-reload tidak berfungsi di development
Pastikan volume mounting sudah di-setup dengan benar:
```bash
docker run -p 3030:3030 \
  -v $(pwd):/app \
  -v /app/node_modules \
  healthcare-app-dev
```

## Performance & Best Practices

1. **Multi-stage build** digunakan untuk mengecilkan ukuran final image
2. **Dumb-init** digunakan untuk signal handling yang proper
3. **.dockerignore** yang optimal untuk mempercepat build
4. Volume mounting untuk development mode dengan hot-reload

## Spesifikasi

- **Base Image**: Node.js 20 Alpine (lightweight)
- **Production Port**: 3000
- **Development Port**: 3030
- **Package Manager**: npm atau yarn

## Notes

- Pastikan Docker dan Docker Compose sudah terinstall
- Untuk Windows, gunakan WSL2 Docker backend
- AUTH_ORIGIN perlu disesuaikan dengan environment/server Anda
