add docker
This commit is contained in:
@@ -0,0 +1,40 @@
|
|||||||
|
# Git
|
||||||
|
.git
|
||||||
|
.gitignore
|
||||||
|
.gitattributes
|
||||||
|
|
||||||
|
# Dependencies
|
||||||
|
node_modules
|
||||||
|
npm-debug.log
|
||||||
|
yarn-error.log
|
||||||
|
pnpm-debug.log
|
||||||
|
|
||||||
|
# Build output
|
||||||
|
.nuxt
|
||||||
|
dist
|
||||||
|
.output
|
||||||
|
build
|
||||||
|
|
||||||
|
# IDE
|
||||||
|
.vscode
|
||||||
|
.idea
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
*~
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
# Environment
|
||||||
|
.env
|
||||||
|
.env.local
|
||||||
|
.env.*.local
|
||||||
|
|
||||||
|
# OS
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
# Tests
|
||||||
|
coverage
|
||||||
|
.nyc_output
|
||||||
|
|
||||||
|
# Documentation
|
||||||
|
README.md
|
||||||
|
docs
|
||||||
+1
-3
@@ -5,6 +5,4 @@ node_modules
|
|||||||
.cache
|
.cache
|
||||||
.output
|
.output
|
||||||
.env
|
.env
|
||||||
dist
|
dist
|
||||||
Dockerfile
|
|
||||||
docker-compose.yml
|
|
||||||
@@ -0,0 +1,150 @@
|
|||||||
|
# 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
|
||||||
+22
@@ -0,0 +1,22 @@
|
|||||||
|
# Development Dockerfile
|
||||||
|
FROM node:20-alpine
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Install basic tools
|
||||||
|
RUN apk add --no-cache git
|
||||||
|
|
||||||
|
# Copy package files
|
||||||
|
COPY package.json yarn.lock* package-lock.json* ./
|
||||||
|
|
||||||
|
# Install dependencies
|
||||||
|
RUN npm install --frozen-lockfile || yarn install --frozen-lockfile
|
||||||
|
|
||||||
|
# Copy source code
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# Expose dev port
|
||||||
|
EXPOSE 3030
|
||||||
|
|
||||||
|
# Run development server
|
||||||
|
CMD ["npm", "run", "dev"]
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
ports:
|
||||||
|
- "3030:3030"
|
||||||
|
environment:
|
||||||
|
- NODE_ENV=production
|
||||||
|
- HOST=0.0.0.0
|
||||||
|
- PORT=3030
|
||||||
|
- AUTH_ORIGIN=http://localhost:3005
|
||||||
|
restart: unless-stopped
|
||||||
|
container_name: general-template-app
|
||||||
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "nuxt build",
|
"build": "nuxt build",
|
||||||
"dev": "nuxt dev -o --host --port 3005",
|
"dev": "nuxt dev -o --host --port 3030",
|
||||||
"generate": "nuxt generate",
|
"generate": "nuxt generate",
|
||||||
"preview": "nuxt preview",
|
"preview": "nuxt preview",
|
||||||
"postinstall": "nuxt prepare"
|
"postinstall": "nuxt prepare"
|
||||||
|
|||||||
Reference in New Issue
Block a user