Menjadi Pekerja Pelabuhan: Implementasi Docker

Docker dan Container dalam Perangkat Lunak

Hidayatul Fikri
Akhirnya
3 min readMay 14, 2020

--

Photo by chuttersnap on Unsplash

Docker

Docker secara kata berarti pekerja pelabuhan. Namun, di sini Docker adalah sebuah aplikasi yang bersifat open source yang berfungsi sebagai wadah/container untuk mengepak/memasukkan sebuah software secara lengkap beserta semua hal lainnya yang dibutuhkan oleh software tersebut dapat berfungsi. Pengaturan software beserta file/hal pendukung lainnya akan menjadi sebuah Image (istilah yang diberikan oleh Docker). Kemudian sebuah instance dari Image tersebut kemudian disebut Container.

Docker sendiri diluncurkan pada tahun 2013 dan membuat perangkat lunak dapat diisolasi dari environent-nya, sehingga memecahkan masalah perangkat lunak yang hanya bisa dijalankan di suatu environment saja.

Container

Container bekerja dengan cara membungkus code aplikasi beserta semua dependencies-nya agar dapat dijalankan di berbagai environment. Berbeda dengan Virtual Machines (VM) yang mempunyai OS sendiri pada setiap VM, Container adalah abstraksi dari app layer sehingga hanya membutuhkan satu OS, membuatnya dapat menjalankan lebih banyak aplikasi dan lebih ringan secara memori dan waktu proses daripada VM.

Penggunaan

Dalam penulisan perangkat lunak melalui GitLab, GitLab memfasilitasi penggunaan Docker Engine melalui GitLab Runner. Dengan GitLab CI/CD, Docker akan menjalankan aplikasi dalam container sesuai dengan image yang didefinisikan di awal.

Misalnya kita sedang bekerja dengan Django melalui GitLab. Implementasi Docker dapat dimulai dengan membuat sebuah Dockerfile, misalnya seperti ini:

# Official Python image
FROM python:3.6

# create root directory for project, set the working directory and move all files
RUN mkdir /cryptoapp
WORKDIR /cryptoapp
ADD . /cryptoapp

# Web server will listen to this port
EXPOSE 8000

# Install all libraries we saved to requirements.txt file
RUN pip install -r requirements.txt

FROM menjelaskan image apa yang akan dipakai dalam Docker. Perintah RUN akan membuat image baru untuk digunakan pada perintah lain. Perintah ADD sendiri akan menyalin file dari local folder ke filesystem image. Sedangkan EXPOSE memberitahukan Docker bahwa container akan menggunakan port 8000.

Lalu, langkah selanjutnya yaitu membuat sebuah file docker-compose.yml. Misalnya seperti ini:

version: "2"
services:
db:
image: postgres
django:
build: .
restart: always
container_name: cryptoapp
command: python manage.py runserver 0.0.0.0:8000
ports:
- "8000:8000"
depends_on:
- db

Service db menjelaskan image yang digunakan dalam database, lalu service django menjalankan framework yang digunakan. Perintah setelah command menjalankan webserver Django yang dibuat.

Terakhir adalah membuat file gitlab-ci.yml yang menyimpan konfigurasi untuk GitLab Runner. Contohnya seperti ini:

stages:
- test
- build
- deploy

test:
stage: test
script: echo "Testing the app"

build:
stage: build
script:
- echo "Building the app"
- docker-compose build

deploy_staging:
stage: deploy
only:
- master
script:
- echo "Deploying the app"
- docker-compose up -d

Dalam contoh, diimplementasikan 3 stages (test, build, dan deploy_staging). Stage pertama untuk test, yang kedua untuk membangun image, dan yang ketiga untuk menjalankan container sesuai dengan image yang dibuat.

Referensi

https://www.matejgazda.com/02-crypto-dev-info-django-with-docker-and-gitlab-runner

--

--