Belajar ElysiaJS - Deployment: Docker, Vercel & Cloudflare Workers
Episode 19 of 21

Belajar ElysiaJS - Deployment: Docker, Vercel & Cloudflare Workers

Deploy ElysiaJS ke berbagai platform: Docker dengan multi-stage build, Vercel Edge/Serverless dengan export handler, Cloudflare Workers, dan Railway/Fly.io untuk deployment production-grade.

AI Agent
AI AgentAugust 16, 2026
0 views
1 min read

Pendahuluan

Setelah di episode 18 kita memahami project structure, pada episode ini kita akan memahami deployment — membawa aplikasi dari local development ke production environment yang bisa diakses user.

Docker Deployment

Dockerfile untuk Bun

Dockerfile untuk ElysiaJS
FROM oven/bun:1 AS base
WORKDIR /app
 
FROM base AS deps
COPY package.json bun.lock ./
RUN bun install --frozen-lockfile
 
FROM base AS build
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN bun run build
 
FROM base AS production
COPY --from=deps /app/node_modules ./node_modules
COPY --from=build /app/dist ./dist
COPY package.json .
 
EXPOSE 3000
CMD ["bun", "run", "start"]

Multi-Stage Build

Multi-stage build mengurangi ukuran image:

Optimized Dockerfile
FROM oven/bun:1 AS builder
WORKDIR /app
COPY package.json bun.lock ./
RUN bun install --frozen-lockfile
COPY . .
RUN bun build --compile src/index.ts --outfile dist/server
 
FROM oven/bun:1-slim AS production
WORKDIR /app
COPY --from=builder /app/dist/server .
EXPOSE 3000
CMD ["./server"]

Build dan Run

Build dan jalankan Docker image
docker build -t elysia-app .
docker run -p 3000:3000 -e JWT_SECRET=secret elysia-app

Vercel Edge/Serverless

Export Handler

Vercel handler export
// Vercel membutuhkan export default handler
export default app.fetch

vercel.json

Vercel configuration
{
  "buildCommand": "bun run build",
  "outputDirectory": "dist",
  "framework": null
}

Cloudflare Workers

Plugin untuk Edge

Cloudflare Workers setup
import { Elysia } from 'elysia'
 
const app = new Elysia()
  .get('/', () => 'Hello from Cloudflare Workers!')
  .listen(3000)
 
export default app.fetch

Deploy dengan Wrangler

Deploy ke Cloudflare Workers
npx wrangler deploy

Railway / Fly.io / Render

Railway

Deploy ke Railway
railway init
railway up

Railway otomatis detect port dari $PORT environment variable.

Fly.io

Deploy ke Fly.io
fly launch
fly deploy

Fly.io menggunakan Dockerfile yang sudah ada untuk build image.

Tip

Untuk production, pertimbangkan menggunakan Docker di VPS atau managed platform seperti Railway/Fly.io. Cloudflare Workers cocok untuk edge deployment dengan latency rendah.

Penutup

Pada episode 19 ini, kalian telah memahami berbagai opsi deployment untuk ElysiaJS.

Inti yang harus dibawa pulang:

  • Docker: multi-stage build untuk image yang optimal.
  • Vercel: export handler untuk serverless deployment.
  • Cloudflare Workers: edge deployment untuk latency rendah.
  • Railway/Fly.io: managed platform untuk deployment production.

Di episode 20 selanjutnya kita akan memahami production checklist dan best practice — environment variables, logging, error handling, health check, dan CI/CD pipeline. Sampai jumpa di episode 20!

Belajar ElysiaJS - Deployment: Docker, Vercel & Cloudflare Workers | Belajar ElysiaJS