Docker adalah platform sumber terbuka yang memanfaatkan teknologi kontainerisasi untuk mempermudah proses pembuatan, penyebaran, dan pengoperasian aplikasi dengan menggunakan kontainer. Kontainer memungkinkan pengembang untuk mengemas semua komponen yang dibutuhkan oleh sebuah aplikasi, seperti pustaka dan dependensi lainnya, menjadi satu paket yang dapat dijalankan secara konsisten di berbagai lingkungan.
Kontainer Docker: Merupakan paket yang ringan, mandiri, dan dapat dieksekusi yang mencakup segala hal yang diperlukan untuk menjalankan sebuah perangkat lunak, termasuk kode, runtime, pustaka, variabel lingkungan, dan file konfigurasi.
Image Docker: Merupakan blueprint untuk membuat kontainer Docker. Image adalah file yang tidak dapat diubah yang berisi instruksi untuk membuat versi aplikasi yang lengkap dan dapat dieksekusi.
Langkah-langkah Membuat Image Next.js dengan Docker:
- Buat Dockerfile: Di direktori utama proyek Next.js Anda, buat file bernama Dockerfile dengan konten berikut:
# Gunakan gambar Alpine Node.js 18 yang ringan
FROM node:18-alpine
# Atur variabel lingkungan dengan nilai default untuk produksi
ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}
# Tentukan direktori kerja
WORKDIR /app
# Salin dan instal dependensi
COPY package*.json ./
RUN if [ "$NODE_ENV" = "development" ]; \
then npm install; \
else npm install --only=production; \
fi
# Salin kode aplikasi
COPY . .
# Bangun aplikasi dalam mode produksi
RUN if [ "$NODE_ENV" = "production" ]; \
then npm run build; \
fi
# Terapkan port 3000
EXPOSE 3000
# Tentukan perintah untuk memulai aplikasi
CMD if [ "$NODE_ENV" = "development" ]; \
then npm run dev; \
else npm start; \
fi
- Membangun dan Menjalankan Kontainer Docker:
Untuk membangun dan menjalankan kontainer Docker, gunakan perintah berikut di terminal:
Lingkungan Pengembangan:
docker build --build-arg NODE_ENV=development -t my-nextjs-app-dev .
docker run -p 3000:3000 -v $(pwd):/app my-nextjs-app-dev
Lingkungan Implementasi:
docker build -t my-nextjs-app-prod .
docker run -p 3000:3000 my-nextjs-app-prod
- Menghentikan Kontainer Docker:
docker stop <nama-kontainer>
Cara Mengunggah Image Docker ke Docker Hub:
- Login ke Docker Hub:
docker login
- Tag Image Docker:
docker tag my-nextjs-app yourusername/my-nextjs-app:latest
- Unggah Image ke Docker Hub:
docker push yourusername/my-nextjs-app:latest
Dengan demikian, Anda sekarang dapat melakukan implementasi aplikasi Next.js Anda menggunakan kontainer Docker. Ini adalah cara yang efektif untuk memastikan konsistensi di berbagai lingkungan dan menyederhanakan proses implementasi aplikasi.