151 lines
3.4 KiB
Markdown
151 lines
3.4 KiB
Markdown
# 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
|