Lewati ke konten utama

10 Ide Proyek Docker: Dari Pemula hingga Lanjutan

Pelajari Docker dengan ide proyek praktis untuk semua tingkat, dari pemula hingga lanjutan, berfokus pada membangun dan mengoptimalkan aplikasi data science.
Diperbarui 16 Apr 2026  · 9 mnt baca

Pengalaman langsung sangat penting untuk menguasai Docker. Docker adalah alat inti dalam pengembangan perangkat lunak dan data science modern, yang memungkinkan Anda membangun, menerapkan, dan mengelola aplikasi dalam container.

Dalam artikel ini, saya memberikan contoh proyek Docker tingkat pemula, menengah, dan lanjutan dengan fokus pada multi-stage builds, optimasi image Docker, dan penerapan Docker dalam data science. Proyek-proyek ini dirancang untuk memperdalam pemahaman Anda tentang Docker dan meningkatkan keterampilan praktis Anda.

Mulai dengan Proyek Docker

Sebelum memulai proyek, pastikan Docker sudah terpasang di komputer Anda. Bergantung pada OS Anda (Windows, macOS, Linux), Anda dapat mengunduh Docker dari situs web resmi Docker.

Anda juga perlu pemahaman dasar tentang:

  • Dockerfile (untuk mendefinisikan isi container Anda)
  • Docker Compose (untuk aplikasi multi-container)
  • Perintah CLI dasar seperti docker build, docker run, docker-compose up, dll.

Jika Anda perlu menyegarkan pemahaman tentang konsep-konsep di atas, lihat kursus Introduction to Docker atau Containerization and Virtualization Concepts.

Mari mulai!

Proyek Docker untuk Pemula

Saat mulai menggunakan Docker, penting untuk memilih proyek yang sesuai dengan tingkat keterampilan Anda sekaligus menantang Anda mempelajari konsep baru. Berikut beberapa ide proyek untuk memulai:

Proyek 1: Menyiapkan web server sederhana

Dalam proyek ini, Anda akan membuat container Docker yang menjalankan web server dasar menggunakan Nginx. Nginx adalah salah satu web server open-source paling populer untuk reverse proxy, load balancing, dan lainnya. Di akhir proyek ini, Anda akan mempelajari cara membuat dan menjalankan container dengan Docker serta membuka port agar aplikasi dapat diakses dari komputer lokal Anda.

Tingkat kesulitan: Pemula

Teknologi yang digunakan: Docker, Nginx

Langkah-langkah

  • Instal Docker: Pastikan Docker terpasang di sistem Anda.
  • Buat direktori proyek: Buat folder baru dan file index.html di dalamnya yang akan disajikan oleh Nginx.
  • Tulis Dockerfile: Dockerfile adalah skrip yang mendefinisikan lingkungan container. Ini memberi tahu Docker image dasar apa yang digunakan, file apa yang disertakan, dan port apa yang diekspos:
FROM nginx:alpine
COPY ./index.html /usr/share/nginx/html
EXPOSE 80
  • Bangun image Docker: Masuk ke folder proyek Anda dan bangun image menggunakan:
docker build -t my-nginx-app .
  • Jalankan container: Mulai container dan petakan port 80 di container ke port 8080 di mesin Anda:
docker run -d -p 8080:80 my-nginx-app
  • Akses web server: Buka browser dan buka http://localhost:8080 untuk melihat halaman yang Anda buat.

Proyek 2: Mendockerisasi skrip Python

Proyek ini melibatkan peng-container-an skrip Python sederhana yang memproses data dari file CSV menggunakan pustaka pandas. Tujuannya adalah mempelajari cara mengelola dependensi dan mengeksekusi skrip Python di dalam container Docker, sehingga skrip menjadi portabel dan dapat dijalankan di lingkungan mana pun.

Tingkat kesulitan: Pemula

Teknologi yang digunakan: Docker, Python, pandas

Langkah-langkah

  • Tulis skrip Python: Buat skrip bernama process_data.py yang membaca dan memproses file CSV. Berikut contoh skripnya:
import pandas as pd
df = pd.read_csv('data.csv')
print(df.describe())
  • Buat file requirements.txt: File ini mencantumkan pustaka Python yang dibutuhkan skrip. Dalam kasus ini, kita hanya membutuhkan pandas:
pandas
  • Tulis Dockerfile: File ini akan mendefinisikan lingkungan untuk skrip Python:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "process_data.py"]
  • Bangun image Docker:
docker build -t python-script .
  • Jalankan container:
docker run -v $(pwd)/data:/app/data python-script

Proyek 3: Membangun aplikasi multi-container sederhana

Proyek ini akan membantu Anda mengenal Docker Compose dengan membangun aplikasi multi-container. Anda akan membuat aplikasi web sederhana menggunakan Flask sebagai frontend dan MySQL sebagai database backend. Docker Compose memungkinkan Anda mengelola beberapa container yang saling bekerja.

Tingkat kesulitan: Pemula

Teknologi yang digunakan: Docker, Docker Compose, Flask, MySQL

Langkah-langkah

  • Tulis aplikasi Flask: Buat aplikasi Flask sederhana yang terhubung ke database MySQL dan menampilkan pesan. Berikut contohnya:
from flask import Flask
import mysql.connector
 
app = Flask(__name__)
 
def get_db_connection():
 	connection = mysql.connector.connect(
	 host="db",
	 user="root",
	 password="example",
	 database="test_db"
 	)
 	return connection
 
@app.route('/')
def hello_world():
 	connection = get_db_connection()
 	cursor = connection.cursor()
 	cursor.execute("SELECT 'Hello, Docker!'")
 	result = cursor.fetchone()
 	connection.close()
 	return str(result[0])
 
if __name__ == "__main__":
 	app.run(host='0.0.0.0')
  • Buat file docker-compose.yml: Docker Compose mendefinisikan dan menjalankan aplikasi Docker multi-container. Dalam file ini, Anda akan mendefinisikan layanan aplikasi Flask dan database MySQL:
version: '3'
services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: test_db
    ports:
      - "3306:3306"
    volumes:
      - db_data:/var/lib/mysql

  web:
    build: .
    ports:
      - "5000:5000"
    depends_on:
      - db
    environment:
      FLASK_ENV: development
    volumes:
      - .:/app

volumes:
  db_data:
  • Tulis Dockerfile untuk Flask: Ini akan membuat image Docker untuk aplikasi Flask:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
  • Bangun dan jalankan container: Gunakan Docker Compose untuk menyalakan seluruh aplikasi:
docker-compose up --build

Proyek Docker Tingkat Menengah

Proyek berikut ditujukan bagi mereka yang telah memahami dasar-dasar Docker dengan baik. Proyek ini akan memperkenalkan konsep yang lebih kompleks, seperti multi-stage builds dan teknik optimasi.

Proyek 4: Multi-stage build untuk aplikasi Node.js

Multi-stage builds membantu mengurangi ukuran image Docker dengan memisahkan lingkungan build dan runtime. Dalam proyek ini, Anda akan mengcontainerkan aplikasi Node.js menggunakan multi-stage builds.

Tingkat kesulitan: Menengah

Teknologi yang digunakan: Docker, Node.js, Nginx

Langkah-langkah

  • Buat aplikasi Node.js sederhana: Tulis server Node.js dasar yang mengembalikan pesan sederhana. Berikut contohnya:
const express = require('express');
const app = express();
 
app.get('/', (req, res) => res.send('Hello from Node.js'));
 
app.listen(3000, () => console.log('Server running on port 3000'));
  • Tulis Dockerfile dengan multi-stage build: Tahap pertama membangun aplikasi, dan tahap kedua menjalankan aplikasi dengan image dasar yang lebih ringan.
# Stage 1: Build
FROM node:14 as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
# Add the following line if there's a build step for the app
# RUN npm run build

# Stage 2: Run
FROM node:14-slim
WORKDIR /app
COPY --from=build-stage /app .
EXPOSE 3000
ENV NODE_ENV=production
CMD ["node", "server.js"]
  • Bangun image:
docker build -t node-multi-stage .
  • Jalankan container:
docker run -p 3000:3000 node-multi-stage

Proyek 5: Mendockerisasi model machine learning dengan TensorFlow

Proyek ini akan melibatkan peng-container-an model machine learning menggunakan TensorFlow. Tujuannya adalah membuat lingkungan portabel di mana Anda dapat menjalankan model TensorFlow di berbagai sistem tanpa khawatir tentang pengaturan dasar.

Tingkat kesulitan: Menengah

Teknologi yang digunakan: Docker, TensorFlow, Python

Langkah-langkah

  • Instal TensorFlow dalam skrip Python: Buat skrip Python model.py yang memuat dan menjalankan model TensorFlow pre-trained:
import tensorflow as tf
model = tf.keras.applications.MobileNetV2(weights='imagenet')
print("Model loaded successfully")
  • Tulis Dockerfile: Definisikan lingkungan untuk TensorFlow di dalam Docker:
FROM tensorflow/tensorflow:latest
WORKDIR /app
COPY . .
CMD ["python", "model.py"]
  • Bangun image:
docker build -t tensorflow-model .
  • Jalankan container:
docker run tensorflow-model

Proyek 6: Membuat lingkungan data science dengan Jupyter dan Docker

Proyek ini berfokus pada pembuatan lingkungan data science yang reprodusibel menggunakan Docker dan Jupyter notebook. Lingkungan ini akan mencakup pustaka Python populer seperti pandas, NumPy, dan scikit-learn.

Tingkat kesulitan: Menengah

Teknologi yang digunakan: Docker, Jupyter, Python, scikit-learn

Langkah-langkah

  • Buat file docker-compose.yml: Definisikan layanan Jupyter Notebook dan pustaka yang diperlukan. Berikut contohnya:
version: '3'
services:
  jupyter:
    	image: jupyter/scipy-notebook
    	ports:
    	- "8888:8888"
    	volumes:
    	- ./notebooks:/home/joelwembo/work
  • Mulai Jupyter Notebook: Gunakan Docker Compose untuk memulai Jupyter Notebook.
docker-compose up
  • Akses Jupyter Notebook: Buka browser Anda dan pergi ke http://localhost:8888.

Proyek Docker Tingkat Lanjutan

Proyek tingkat lanjutan ini akan berfokus pada aplikasi dunia nyata dan konsep Docker tingkat lanjut, seperti pipeline deep learning dan pipeline data otomatis.

Proyek 7: Mengurangi ukuran image Docker untuk aplikasi Python

Dalam proyek ini, Anda akan mengoptimalkan image Docker untuk aplikasi Python dengan menggunakan image dasar minimal seperti Alpine Linux dan menerapkan multi-stage builds agar ukuran image sekecil mungkin.

Tingkat kesulitan: Lanjutan

Teknologi yang digunakan: Docker, Python, Alpine Linux

Langkah-langkah

  • Tulis skrip Python: Buat skrip yang menganalisis data menggunakan pandas. Berikut contoh skripnya:
import pandas as pd
df = pd.read_csv('data.csv')
print(df.head())
  • Optimalkan Dockerfile: Gunakan multi-stage builds dan Alpine Linux untuk membuat image ringan.
# Stage 1: Build stage
FROM python:3.9-alpine as build-stage
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY script.py .

# Stage 2: Run stage
FROM python:3.9-alpine
WORKDIR /app
COPY --from=build-stage /app/script.py .
CMD ["python", "script.py"]
  • Bangun image:
docker build -t optimized-python-app .

Proyek 8: Mendockerisasi pipeline deep learning dengan PyTorch

Proyek ini melibatkan peng-container-an pipeline deep learning menggunakan PyTorch. Fokusnya adalah mengoptimalkan Dockerfile untuk kinerja dan ukuran, sehingga mudah menjalankan model deep learning di berbagai lingkungan.

Tingkat kesulitan: Lanjutan

Teknologi yang digunakan: Docker, PyTorch, Python

Langkah-langkah

  • Instal PyTorch dalam skrip Python: Buat skrip yang memuat model PyTorch pre-trained dan melakukan inferensi. Berikut contohnya:
import torch
model = torch.hub.load('pytorch/vision', 'resnet18', pretrained=True)
print("Model loaded successfully")
  • Tulis Dockerfile: Definisikan lingkungan untuk PyTorch:
FROM pytorch/pytorch:1.9.0-cuda11.1-cudnn8-runtime
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY model.py .
CMD ["python", "model.py"]
  • Bangun image:
docker build -t pytorch-model .
  • Jalankan container:
docker run pytorch-model 

Proyek 9: Mengotomatisasi pipeline data dengan Apache Airflow dan Docker

Dalam proyek ini, Anda akan menyiapkan dan mengcontainerkan lingkungan Apache Airflow untuk mengotomatisasi pipeline data. Apache Airflow adalah alat populer untuk mengorkestrasi workflow kompleks yang banyak digunakan dalam rekayasa data.

Tingkat kesulitan: Lanjutan

Teknologi yang digunakan: Docker, Apache Airflow, Python, PostgreSQL

Langkah-langkah

  • Buat file docker-compose.yml: Definisikan layanan Airflow dan database PostgreSQL:
version: '3'
services:
  postgres:
    image: postgres:latest
    environment:
      POSTGRES_USER: airflow
      POSTGRES_PASSWORD: airflow
      POSTGRES_DB: airflow
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data

  webserver:
    image: apache/airflow:latest
    environment:
      AIRFLOW__CORE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow
      AIRFLOW__CORE__EXECUTOR: LocalExecutor
    depends_on:
      - postgres
    ports:
      - "8080:8080"
    volumes:
      - ./dags:/opt/airflow/dags
    command: ["webserver"]

  scheduler:
    image: apache/airflow:latest
    environment:
      AIRFLOW__CORE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow
      AIRFLOW__CORE__EXECUTOR: LocalExecutor
    depends_on:
      - postgres
      - webserver
    volumes:
      - ./dags:/opt/airflow/dags
    command: ["scheduler"]

volumes:
  postgres_data:
  • Mulai lingkungan Airflow: Gunakan Docker Compose untuk menyalakan lingkungan Airflow:
docker-compose up

Proyek 10: Mendeploy API data science dengan FastAPI dan Docker

Bangun dan deploy API data science menggunakan FastAPI. Anda akan mengcontainerkan API menggunakan Docker dan berfokus pada pengoptimalannya untuk lingkungan produksi.

Tingkat kesulitan: Lanjutan

Teknologi yang digunakan: Docker, FastAPI, Python, scikit-learn

Langkah-langkah

  • Tulis aplikasi FastAPI: Buat API sederhana yang menggunakan model machine learning untuk prediksi. Berikut contohnya:
from fastapi import FastAPI
import pickle
 
app = FastAPI()
with open("model.pkl", "rb") as f:
   model = pickle.load(f)
 
@app.post("/predict/")
def predict(data: list):
   return {"prediction": model.predict(data)}
  • Tulis Dockerfile: Buat Dockerfile yang mendefinisikan lingkungan untuk FastAPI:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]
  • Bangun image:
docker build -t fastapi-app .
  • Jalankan container:
docker run -p 8000:8000 fastapi-app

Tips untuk Mengerjakan Proyek Docker

Saat Anda mengerjakan proyek-proyek ini, ingat tips berikut:

  • Mulai dari yang kecil: Mulailah dengan proyek yang sedikit menantang, lalu beralih ke tugas yang lebih kompleks. Membangun kepercayaan diri melalui tugas yang lebih sederhana itu penting.
  • Dokumentasikan kemajuan Anda: Simpan catatan rinci proyek Anda untuk melacak pembelajaran dan sebagai referensi untuk upaya di masa depan.
  • Bergabung dengan komunitas Docker: Ikuti forum daring dan meetup lokal untuk berbagi pengalaman, bertanya, dan belajar dari orang lain.
  • Bereksperimen dan kustomisasi: Jangan ragu mengutak-atik proyek, mencoba pendekatan berbeda, dan mengeksplorasi fitur Docker baru.
  • Terus belajar: Lanjutkan memperluas pengetahuan Docker Anda dengan mengeksplorasi topik dan alat tingkat lanjut seperti Kubernetes, Docker Swarm, atau arsitektur microservices.

Kesimpulan

Menguasai Docker bukan hanya soal mempelajari perintah dan konfigurasi. Ini tentang memahami bagaimana Docker cocok dalam pengembangan aplikasi modern, alur kerja data science, dan manajemen infrastruktur.

Proyek-proyek yang saya bagikan dalam panduan ini memberikan beberapa ide untuk membangun keterampilan dasar dan pengalaman langsung yang dibutuhkan agar akhirnya unggul dalam skenario dunia nyata.

Pada tahap ini, saya menyarankan memperkuat pengetahuan Anda dengan mengikuti kursus berikut:

FAQs

Apa praktik terbaik untuk menulis Dockerfile yang efisien?

Praktik terbaik untuk menulis Dockerfile yang efisien mencakup meminimalkan jumlah layer dengan menggabungkan perintah, menggunakan multi-stage builds untuk mengurangi ukuran image, memilih image dasar yang ringan, melakukan cache dependensi, dan menghindari menyertakan file yang tidak diperlukan dalam image final.

Apa itu multi-stage build dalam Docker?

Multi-stage build adalah metode untuk mengoptimalkan image Docker dengan memisahkan lingkungan build dan runtime. Ini menghasilkan image yang lebih kecil dan lebih aman.

Bagaimana cara mengurangi ukuran image Docker?

Gunakan image dasar minimal, kelola dependensi secara efisien, dan terapkan multi-stage builds untuk mengurangi ukuran image dan meningkatkan kinerja.

Bagaimana cara memecahkan kesalahan umum saat membangun image Docker?

Kesalahan umum saat membangun image Docker mencakup masalah perizinan, sintaks Dockerfile yang salah, dan kegagalan instalasi dependensi. Untuk pemecahan masalah, periksa log build Docker, pastikan Anda menggunakan image dasar yang benar, dan konfirmasi bahwa jalur atau izin file sudah diatur dengan benar. Alat seperti docker build --no-cache dapat membantu mengidentifikasi masalah caching.

Bisakah saya menggunakan Docker dengan Kubernetes untuk proyek-proyek ini?

Ya, setelah Anda nyaman dengan Docker, Kubernetes dapat menjadi langkah berikutnya. Kubernetes membantu mengelola aplikasi tercontainer dalam skala besar. Anda dapat mendeploy proyek Docker Anda di klaster Kubernetes untuk mengelola banyak instance, menangani penskalaan, dan mengotomatisasi deployment.

Apa saja praktik terbaik untuk mengelola volume Docker dan data persisten?

Saat bekerja dengan volume Docker, penting untuk menggunakan named volume untuk memastikan persistensi data saat container dimulai ulang. Secara berkala lakukan backup volume Anda dan pantau potensi bottleneck kinerja akibat I/O disk. Hindari menyimpan data sensitif langsung di container; gunakan solusi penyimpanan yang aman atau database eksternal.

Apa tujuan direktif ENTRYPOINT dalam Dockerfile?

Direktif ENTRYPOINT dalam Dockerfile menentukan perintah yang selalu dijalankan saat container dimulai. Ini memungkinkan container diperlakukan seperti executable, di mana argumen dapat diteruskan saat runtime, sehingga meningkatkan fleksibilitas.

Apa perbedaan antara CMD dan ENTRYPOINT dalam Dockerfile?

Baik CMD maupun ENTRYPOINT menentukan perintah yang dijalankan saat container dimulai. Namun, CMD menyediakan argumen default yang dapat ditimpa, sedangkan ENTRYPOINT mendefinisikan perintah yang selalu berjalan. ENTRYPOINT berguna untuk membuat container yang bertindak seperti executable, sementara CMD lebih fleksibel untuk menentukan perintah default.


Joel Wembo's photo
Author
Joel Wembo
LinkedIn
Twitter

Arsitek Solusi Cloud Bersertifikat AWS, DevOps, dan Cloud Engineer dengan pemahaman mendalam tentang arsitektur dan konsep ketersediaan tinggi. Saya memiliki pengetahuan di bidang rekayasa cloud dan DevOps serta mahir memanfaatkan sumber daya open-source untuk menjalankan aplikasi tingkat perusahaan. Saya membangun aplikasi berbasis cloud menggunakan AWS, AWS CDK, AWS SAM, CloudFormation, Serverless Framework, Terraform, dan Django.

Topik

Pelajari lebih lanjut tentang Docker dengan kursus-kursus ini!

Program

Kontainerisasi dan Virtualisasi dengan Docker dan Kubernetes

13 Hr
Pelajari kekuatan Docker dan Kubernetes, jalur interaktif ini akan memungkinkan Anda untuk membangun dan mengimplementasikan aplikasi di lingkungan modern.
Lihat DetailRight Arrow
Mulai Kursus
Lihat Lebih BanyakRight Arrow
Terkait

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

12 mnt

Lihat Lebih BanyakLihat Lebih Banyak