Create Docker Image
Create Docker Image

Create Docker Image dan Upload ke Docker Hub

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

Membuat Directory Project Todo App
Membuat Directory Project Todo App

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

change directory dan git clone project
change directory dan git clone project

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  .

Membuat Dockerfile Todo App
Membuat Dockerfile Todo App

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 .

Proses Build Image Todo App
Proses Build Image Todo App

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

Hasil Build Image Todo App
Hasil Build Image Todo App

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

Membuat Container dan Menjalankan
Membuat Container dan Menjalankan
  • 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 App

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.

Mengakses Container Todo App
Mengakses Container Todo App

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.

Membuat Repository di Docker HUB
Membuat Repository di Docker HUB

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

Login Docker Hub di Server
Login Docker Hub di Server

Buatlah nama Docker image baru yang akan diupload sesuai dengan nama repositori yang telah kamu buat.

sudo docker tag getting-started username/Repoistory-Name

Membuat Docker Image dengan nama sama repository Hub
Membuat Docker Image dengan nama sama repository Hub

Jalankan perintah berikut untuk mengupload docker image ke dalam dockerhub.

sudo docker push username/Repository-Name

Push Docker Image ke Hub
Push Docker Image ke Hub

Hasil upload image dari server ke Docker Hub.

Hasil Upload Image Docker ke hub
Hasil Upload Image Docker ke 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

Pull Image Docker Hub getting-started
Pull Image Docker Hub getting-started

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

Hasil Pull Image getting-started dari Docker Hub
Hasil Pull Image getting-started dari Docker Hub