Dokploy: Deploy Aplikasi dan Database
Deploy aplikasi Node.js/Bun dan setup database production
Tujuan Pembelajaran
- Bisa deploy aplikasi dari Git repository
- Mengerti environment variables dan secrets
- Bisa setup database dengan Dokploy
Analogi
Deploy Flow:
Git Push → Dokploy Pull → Build Docker → Run Container → Traefik Route → SSL
Dokploy menyederhanakan deployment ke workflow: push code, Dokploy handle sisanya
Penjelasan Konsep
Setelah Dokploy terinstall, saatnya deploy aplikasi pertama. Dokploy support beberapa cara deploy: dari Git repository, Docker image, atau Docker Compose.
Deploy dari Git Repository
Ini adalah cara paling umum dan convenient:
- Create Project di Dokploy dashboard
- Add Application → pilih Git provider (GitHub, GitLab, atau Git URL)
- Select repository dan branch
- Configure build: Dokploy auto-detect atau manual
- Set environment variables
- Deploy
Build Configuration
Dokploy bisa auto-detect berdasarkan project files:
- Nixpacks (default): Auto-detect language dan generate build plan
- Dockerfile: Gunakan Dockerfile custom
- Docker Compose: Multi-container deployment
Environment Variables
Environment variables di Dokploy di-encrypt dan di-mount ke container:
NODE_ENV=production
DATABASE_URL=postgresql://...
JWT_SECRET=your-secret
REDIS_URL=redis://...
Database Setup
Dokploy punya one-click database templates:
- Create Database di dashboard
- Pilih type: PostgreSQL, MySQL, Redis, MongoDB, MariaDB
- Set resource limits (opsional)
- Database berjalan sebagai Docker container
- Internal networking: aplikasi bisa connect dengan service name
Internal connection string:
# PostgreSQL
postgresql://postgres:password@postgres:5432/dbname
# Redis
redis://redis:6379
Notice: Tidak perlu expose port ke public! Aplikasi dan database berkomunikasi melalui Docker internal network.
Domain dan SSL
- Tambahkan custom domain di application settings
- Point A record domain ke VPS IP
- Dokploy otomatis generate SSL certificate via Let’s Encrypt
- HTTPS siap digunakan!
Auto-Deploy
Enable auto-deploy untuk automatic deployment saat push ke branch:
Settings → Git → Auto Deploy: Enabled
Setiap git push ke branch akan otomatis trigger build dan deploy baru.
Inti yang Perlu Dipahami
Bagian ini berfokus pada bisa deploy aplikasi dari Git repository., mengerti environment variables dan secrets., dan bisa setup database dengan Dokploy. Jangan terburu-buru menghafal istilahnya. Lebih penting untuk memahami peran setiap konsep dan kapan konsep itu muncul dalam pekerjaan web development.
Saat membaca Dokploy, gunakan tujuan belajar sebagai penanda arah. Kalau kamu sudah bisa menjelaskan tujuan itu dengan kata-katamu sendiri, berarti fondasinya mulai terbentuk.
Cara Membayangkannya
Dokploy menyederhanakan deployment ke workflow: push code, Dokploy handle sisanya. Analogi ini dipakai supaya konsep teknis tidak terasa melayang. Hubungkan setiap istilah dengan perannya: siapa yang meminta, siapa yang memproses, data apa yang berpindah, dan hasil apa yang diharapkan.
Kalau analoginya sudah terasa masuk akal, barulah lihat istilah teknisnya. Cara ini membuat materi lebih mudah dipahami daripada langsung menghafal definisi.
Saat Melihat Contoh Kode
Contoh kode pada chapter ini memakai bahasa bash. Bacalah contoh kode sebagai ilustrasi alur, bukan sebagai bagian yang harus langsung dihafal. —frozen-lockfile memastikan dependency tidak berubah. Multi-service dengan Docker Compose untuk app + database + cache.
Perhatikan nama fungsi, urutan langkah, dan data yang berpindah. Biasanya tiga hal itu sudah cukup untuk memahami hubungan antara teori dan praktik.
Konteks dalam Perjalanan Belajar
Setiap konsep di platform ini dipilih karena dipakai di industri. Fokus pada pemahaman, bukan hafalan.
Kamu sudah di bagian lanjutan. Mulai pikirkan bagaimana konsep ini dipakai di dunia kerja — bukan hanya untuk belajar, tapi untuk membangun produk nyata.
Gunakan pertanyaan reflektif dan prompt AI di akhir chapter sebagai latihan aktif. Membaca saja tidak cukup — kamu perlu menjelaskan ulang dengan kata-katamu sendiri.
Contoh Kode
# Dokploy Dockerfile untuk Bun app
# Dockerfile
FROM oven/bun:1 AS base
WORKDIR /app
# Dependencies
COPY package.json bun.lockb ./
RUN bun install --frozen-lockfile
# Source
COPY . .
# Build (kalau perlu)
# RUN bun run build
# Production
EXPOSE 3000
ENV NODE_ENV=production
CMD ["bun", "run", "src/index.ts"]
# docker-compose.yml (untuk multi-service)
version: '3.8'
services:
app:
build: .
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgresql://postgres:pass@db:5432/app
- REDIS_URL=redis://redis:6379
- NODE_ENV=production
depends_on:
- db
- redis
db:
image: postgres:16-alpine
environment:
POSTGRES_DB: app
POSTGRES_PASSWORD: pass
volumes:
- pgdata:/var/lib/postgresql/data
redis:
image: redis:7-alpine
volumes:
- redisdata:/data
volumes:
pgdata:
redisdata:Penjelasan Kode
Prompt AI
Deploy aplikasi Bun + Hono + Drizzle + Redis ke Dokploy. Gunakan Dokploy managed database.
Pertanyaan Reflektif
Setup CI/CD pipeline: push ke main branch → GitHub Action → Dokploy webhook → auto deploy.