Tutorial Docker: Docker Build dengan Argument

Pada saat kita melakukan dockerize aplikasi, ada kalanya aplikasi tersebut perlu value (nilai) yang berbeda disetiap proses build image docker. Nah, ketika kebutuhanya seperti itu proses build image perlu diberikan parameter build argument. Argument ini bisa kita atur value (nilainya) saat proses build image docker.

Docker Build Image
Docker Image

Contoh kasus sederhananya misalnya, kita akan membuat beberapa image dengan identitas konten yang berbeda. image1-app kontenya ingin “dev”, image2-app kontenya ingin “stage”.

Manipulasi / pengubahan value (nilai) dimasing-masing konten image yang akan dibuat bisa menggunakan opsi build argument. Namun, Dockerfile sebagai file inti proses build image docker perlu di define opsi ARG terlebih dahulu.

Baca juga: Tutorial Docker: Instalasi Docker CE (Server & Desktop)

Lebih jelasnya pahami Dockerfile berikut:

FROM golang:alpine

ARG INSTANCE_ID_ARG

ENV PORT=8080 INSTANCE_ID=${INSTANCE_ID_ARG}

RUN apk update && \
    apk add git \
    --no-cache

WORKDIR /app

COPY . .

RUN go mod tidy
RUN go build -o hello-world

ENTRYPOINT [ "./hello-world" ]

Dockerfile tersebut saya dapatkan dari course Udemy mas Noval Agung Prayogo. Kurang lebihnya sama, namun ada pengubahan sedikit. Hhe

Jadi, Dockerfile tersebut untuk dockerize aplikasi hello-world. Aplikasi hello-world tersebut berbasis golang yang saya salin dari repositori mas Noval Agung dan sudah mendukung pengubahan konten return body http sesuai value (nilai) yang kita define pada bagian ENV Dockerfile.

Terlihat ada argument INSTANCE_ID_ARG yang mana nanti kita akan manipulasi nilainya pada saat proses build image Docker.

Nilai dari INSTANCE_ID_ARG tersebut akan dimasukkan kedalam nilai environment INSTANCE_ID yang mana nilai environment tersebut sebagai nilai konten aplikasi hello-world saat diakses.

Untuk command build image Docker-nya seperti berikut:

docker build --build-arg INSTANCE_ID_ARG="dev" -t go-hello-world:dev .
docker build --build-arg INSTANCE_ID_ARG="stage" -t go-hello-world:stage .

Command run contohnya seperti berikut:

docker run -it --rm -p 8080:8080 go-hello-world:dev

Verifikasi:

Hello-World

Source aplikasi bisa diambil disini: go-hello-world

Ubah aja bagian Dockerfile. Salam

Leave a Reply