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.
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:
Source aplikasi bisa diambil disini: go-hello-world
Ubah aja bagian Dockerfile
. Salam
Admin LUKMANLAB, DevOps Engineer, Site Reliability Engineer, System Administrator.