NEWAuto-scale sesuai traffic
Bonus 25%!0h
Detail
dockerfiledockercontainerdeploymenthelipodtutorial

Cara Membuat Dockerfile untuk Deploy di Helipod: Panduan dari Dasar sampai Advanced

Tim Helipod

4 menit baca

Dockerfile memungkinkan kamu kontrol penuh atas environment build. Pelajari cara membuat Dockerfile untuk berbagai framework, dari Node.js, Python, sampai Go — lengkap dengan tips optimasi.

Helipod bisa otomatis generate Dockerfile untuk banyak framework. Tapi ada kalanya kamu butuh kontrol penuh — custom build steps, dependency khusus, atau multi-stage build untuk optimasi.

Dockerfile custom memberikan kamu kendali penuh atas bagaimana aplikasi di-build dan dijalankan di container. Artikel ini menjelaskan cara membuat Dockerfile untuk berbagai framework di Helipod.

Kapan Perlu Dockerfile Custom?

Helipod sudah bisa auto-generate Dockerfile untuk:

  • Node.js (Next.js, Express, NestJS)
  • Python (Django, FastAPI, Flask)
  • PHP (Laravel)
  • Go

Tapi kamu butuh Dockerfile custom jika:

  • Multi-stage build — ingin image lebih kecil
  • Dependency khusus — butuh system package tertentu
  • Build steps kustom — proses build yang tidak standar
  • Monorepo — project dengan banyak service dalam satu repo

Struktur Dasar Dockerfile

# 1. Base image
FROM node:20-alpine

# 2. Working directory
WORKDIR /app

# 3. Copy dependency files
COPY package.json yarn.lock ./

# 4. Install dependencies
RUN yarn install --frozen-lockfile

# 5. Copy source code
COPY . .

# 6. Build (jika applicable)
RUN yarn build

# 7. Expose port
EXPOSE 3000

# 8. Start command
CMD ["yarn", "start"]

Contoh Dockerfile per Framework

Node.js / Next.js

FROM node:20-alpine AS builder
WORKDIR /app
COPY package.json yarn.lock ./
RUN yarn install --frozen-lockfile
COPY . .
RUN yarn build

FROM node:20-alpine AS runner
WORKDIR /app
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
COPY --from=builder /app/public ./public

EXPOSE 3000
ENV PORT=3000
CMD ["node", "server.js"]

Untuk panduan lengkap deploy Next.js, baca: Cara Deploy Next.js ke Helipod

Python / Django

FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
RUN python manage.py collectstatic --noinput
EXPOSE 8000
CMD ["gunicorn", "myproject.wsgi:application", "--bind", "0.0.0.0:8000"]

Untuk panduan lengkap deploy Django, baca: Cara Deploy Django ke Helipod

PHP / Laravel

FROM php:8.3-fpm
RUN docker-php-ext-install pdo pdo_mysql
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
WORKDIR /app
COPY . .
RUN composer install --no-dev --optimize-autoloader
EXPOSE 9000
CMD ["php-fpm"]

Untuk panduan lengkap deploy Laravel, baca: Cara Deploy Laravel ke Helipod

Go

FROM golang:1.22-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -o main .

FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /app/main .
CMD ["./main"]

Multi-Stage Build

Multi-stage build memungkinkan kamu memisahkan proses build dari runtime, menghasilkan image yang lebih kecil:

# Stage 1: Build
FROM node:20-alpine AS builder
WORKDIR /app
COPY . .
RUN yarn install && yarn build

# Stage 2: Production
FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
EXPOSE 3000
CMD ["node", "dist/index.js"]

Hasil: Image production hanya berisi file yang dibutuhkan, tanpa source code dan build tools.

Tips Optimasi

1. Gunakan .dockerignore

node_modules
.git
.env
*.md
Dockerfile
docker-compose.yml

2. Cache Dependencies

Copy package.json / requirements.txt terlebih dahulu sebelum copy source code. Ini memastikan dependency hanya di-install saat file dependency berubah.

3. Gunakan Alpine Images

# ❌ Besar (~900MB)
FROM node:20

# ✅ Kecil (~170MB)
FROM node:20-alpine

4. Multi-stage Build

Pisahkan build stage dari production stage untuk image yang lebih kecil.

5. Non-Root User

FROM node:20-alpine
RUN addgroup -g 1001 -S appgroup && \
    adduser -S appuser -u 1001
USER appuser

Debugging Dockerfile

Jika build gagal di Helipod:

  1. Cek deployment logs — error akan muncul di log build
  2. Jalankan Dockerfile lokaldocker build -t app . untuk test
  3. Periksa base image — pastikan image tersedia dan compatible
  4. Cek perintah — pastikan semua command bisa dijalankan di base image

Untuk panduan debugging lengkap, baca: Cara Deploy Laravel ke Helipod — bagian troubleshooting

Mulai Sekarang

Daftar gratis di helipod.io. Buat Dockerfile custom untuk aplikasi kamu dan deploy dalam hitungan menit.

Butuh bantuan? Hubungi support@helipod.id atau bergabung di komunitas hangar.helipod.io.

Baca juga:

Fitur Terkait

Dockerfile Support

Siap coba Helipod?

Deploy aplikasi kamu sekarang. Gratis, tanpa kartu kredit.

Mulai Gratis →