Docker telah menjadi standar industri dalam pengembangan aplikasi modern. Dengan Docker, kamu dapat mengemas aplikasi beserta semua dependensinya ke dalam sebuah container yang dapat berjalan di berbagai lingkungan. Artikel ini akan memandu kamu create docker image dan menguploadnya ke Docker Hub.
Clone Project Todo App dari Github
Buka terminal buatkan sebuah directory baru untuk source code Todo App, contoh disini membuat sebuah directory dengan nama belajar_data_engineering pada directory default user linux dengan menjalankan perintah dibawah.
mkdir belajar_data_engineering

Selanjutnya masuk ke directory belajar_data_engineering, dengan menjalankan perintah dibawah.
cd belajar_data_engineering
Setelah masuk ke directory belajar_data_engineering, tahap selanjutnya tahap clone project Todo App.
git clone https://github.com/docker/getting-started-app.git
Masuk ke directory source code Todo App
cd getting-started-app

Membuat Dockerfile
Dockerfile berisi instruksi teks untuk membangun Image Docker secara otomatis, mendefinisikan semua yang dibutuhkan aplikasi (kode, runtime, dependensi, variabel lingkungan) agar bisa dijalankan dalam kontainer.
Buat file Dockerfile pada directory getting-started-app, dengan perintah touch Dockerfile .

Masukan scrip dockerfile untuk membuat image Todo App.
# syntax=docker/dockerfile:1
FROM node:lts-alpine
WORKDIR /app
COPY . .
RUN yarn install –production
CMD [“node”, “src/index.js”]
EXPOSE 3000
Keterangan:
- # syntax=docker/dockerfile:1 => Menentukan versi sintaks Dockerfile yang digunakan.
- FROM node:lts-alpine => Menggunakan image dasar node:lts-alpine, yaitu versi Node.js LTS (Long Term Support) berbasis Alpine Linux.
- WORKDIR /app => Mengatur direktori kerja dalam container ke /app .
- COPY . . => Menyalin semua file dari direktori proyek lokal ke dalam container di direktori /app .
- RUN yarn install –production => Menjalankan perintah yarn install –production untuk menginstal dependensi yang dibutuhkan aplikasi.
- CMD [“node”, “src/index.js”] => Menjalankan aplikasi saat container dimulai, dengan menjalankan perintah:
node src/index.js
- EXPOSE 3000 =>Menentukan bahwa container akan menggunakan port 3000.
Dockerfile ini dimulai dengan image dasar node:lts-alpine, image Linux ringan yang disertai Node.js dan pengelola paket Yarn yang sudah terinstall. Dockerfile ini menyalin semua kode sumber ke dalam image dan memasang dependensi yang diperlukan.
Membuat Docker Image
Setelah itu, masuklah ke dalam terminal di dalam VSCode, kemudian jalankan perintah berikut ini untuk membuat docker image dari dockerfile yang sudah dibuat:
docker build -t getting-started .

Keterangan:
- docker build => Memulai proses build untuk membuat image Docker.
- -t getting-started => Memberikan nama (tag) pada image yang dibuat.
- . (titik) => Menunjukkan bahwa Docker harus mencari Dockerfile di direktori saat ini untuk membangun image.
Akan menjalankan proses untuk membuat image baru, setelah selesai, cek maka akan muncul image. Jalankan perintah dibawah
sudo docker image ls

Membuat dan Menjalankan Container Todo App (IP Public)
Setelah image Docker berhasil dibuat, jalankan perintah berikut di terminal untuk membuat dan menjalankan container dari image yang baru dibuat tersebut:
docker run -d -p 3000:3000 getting-started

- docker run => Perintah untuk menjalankan container baru dari sebuah image Docker.
- d => Opsi untuk menjalankan container dalam mode detached (latar belakang), memungkinkan kamu tetap menggunakan terminal yang aktif.
- p 3000:3000 => Opsi untuk memetakan port.
Struktur: HOST:CONTAINER :
Bagian kiri (3000) adalah alamat IP Public dan port Server/VPS/Cloud. Bagian kanan (3000) adalah port di dalam container.
Opsi ini memetakan port 3000 dalam container ke 3000 di machine kamu, sehingga aplikasi dapat diakses melalui browser.
- getting-started => Nama image Docker yang akan digunakan untuk membuat dan menjalankan container.
Untuk melihat container berhasil dibuat dan berjalan dengan status Up 3 Minutes. jalankan perintah di bawah.
sudo docker container ls

Status Container Todo AppTahap selanjutnya pengujian dengan mengakses IP Address container Todo App dan Port yang di expose ke public di browser IP_Public:3000. Pastikan muncul seperti gambar dibawah.

Push & Pull Image ke Docker Registry
Kita akan mempelajari mengelola image Docker yang menjadi kekuatannya, lalu berlatih untuk menggunakan Docker Registry.
Meliputi mengunggah (push) image buatan sendiri ke registry dan menggunakan (pull) image yang sudah tersedia untuk dijalankan dalam container.
Upload Image (Push)
Silakan daftar (sign up) terlebih dahulu di Docker Hub. Setelah proses pendaftaran selesai, masuk (login) ke platform menggunakan akun tersebut.
Selanjutnya, kita perlu membuat sebuah repository (repositori) di Docker Hub. Repository ini berfungsi sebagai tempat penyimpanan khusus untuk menampung Docker image yang akan kita unggah (push) nantinya.

Buka terminal/ command line kemudian gunakan perintah berikut untuk login ke dockerhub melalui command line. Ganti username dengan user name dockerhub kalian. Kemudian masukkan pasword dockerhub.
sudo docker login -u username

Buatlah nama Docker image baru yang akan diupload sesuai dengan nama repositori yang telah kamu buat.
sudo docker tag getting-started username/Repoistory-Name

Jalankan perintah berikut untuk mengupload docker image ke dalam dockerhub.
sudo docker push username/Repository-Name

Hasil upload image dari server ke Docker Hub.

Download Image (Pull)
Untuk menguji image docker hub, stop delete container yang berjalan menggunakan image sama dan hapus. Selanjutnya pull image dari Hub Docker dengan menjalankan perintah.
docker pull ga46/getting-started:latest

Maka docker akan melakukan pull docker image tersebut ke dalam server yang menjalankan.


