Files
general-template/DOCKER.md
Yusron alamsyah dc8e9a9208 add docker
2026-03-26 15:54:08 +07:00

3.4 KiB

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:

# 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:

# 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:

# 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:

# 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:

environment:
  - NODE_ENV=production
  - AUTH_ORIGIN=http://your-auth-server:3005

Atau melalui .env file:

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

Build & Push ke Registry (Opsional)

# 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

# Check logs
docker logs <container-id>

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

Port sudah terpakai

# 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:

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