Argumen Pembangunan dalam Docker
Instruksi ARG
pada Dockerfile memungkinkan Anda untuk menentukan variabel yang dapat digunakan selama proses pembangunan gambar. Variabel-variabel ini disebut argumen pembangunan, dan dapat digunakan untuk menyesuaikan proses pembangunan, sehingga lebih dinamis dan fleksibel.
Untuk menentukan argumen pembangunan, gunakan instruksi ARG
dalam Dockerfile Anda:
ARG MY_VARIABLE=default_value
Argumen pembangunan kemudian dapat digunakan dalam berbagai instruksi di dalam Dockerfile. Sebagai contoh:
FROM node:14
ARG MY_VARIABLE
RUN echo "The value of MY_VARIABLE is: $MY_VARIABLE"
Untuk memasukkan nilai untuk argumen pembangunan selama proses pembangunan, gunakan flag --build-arg
dengan perintah docker build
:
$ docker build --build-arg MY_VARIABLE=my_value -t my_image .
ENV vs. ARG
Kedua instruksi ARG
dan ENV
digunakan untuk menentukan variabel dalam Dockerfile. Namun, terdapat beberapa perbedaan antara keduanya:
- Variabel
ARG
hanya tersedia selama proses pembangunan, sementara variabelENV
ada dalam gambar yang dihasilkan dan tersedia selama runtime wadah. - Variabel
ARG
dapat ditimpa selama proses pembangunan dengan flag--build-arg
, sementara variabelENV
dapat ditimpa selama runtime wadah dengan flag-e
atau melalui file lingkungan.
Memparametrikakan Pembangunan Docker
Argumen pembangunan menyediakan cara yang efisien untuk memparametrikakan pembangunan Docker Anda. Ini dapat sangat berguna ketika Anda perlu membangun gambar dengan konfigurasi yang berbeda atau ketika Anda ingin menghindari hardcoding nilai dalam Dockerfile Anda.
Sebagai contoh, Anda dapat memparametrikakan versi gambar dasar atau instalasi paket tambahan:
ARG BASE_IMAGE_VERSION=latest
FROM node:${BASE_IMAGE_VERSION}
ARG ADDITIONAL_PACKAGES=""
RUN apt-get update && apt-get install -y $ADDITIONAL_PACKAGES
Multi-stage Builds dengan Argumen
Multi-stage builds memungkinkan Anda mengoptimalkan gambar Docker Anda dengan menggunakan tahapan-tahapan pembangunan terpisah untuk menghasilkan gambar akhir yang minimal. Argumen pembangunan dapat digunakan di seluruh tahap yang berbeda untuk menyesuaikan proses pembangunan.
Berikut contoh multi-stage builds dengan argumen pembangunan:
ARG BASE_IMAGE_VERSION=latest
FROM node:${BASE_IMAGE_VERSION} as build
ARG MY_VARIABLE
WORKDIR /app
COPY . .
RUN npm install && npm run build
FROM node:${BASE_IMAGE_VERSION}-slim as production
ARG MY_VARIABLE
WORKDIR /app
COPY /app/dist /app/dist
RUN echo "The value of MY_VARIABLE in the production stage is: $MY_VARIABLE"
CMD ["npm", "start"]
Pada contoh di atas, kita menggunakan argumen pembangunan MY_VARIABLE
di kedua tahap pembangunan dan produksi. Ini menunjukkan bagaimana argumen pembangunan dapat dimanfaatkan di seluruh tahap yang berbeda dalam multi-stage builds untuk menjaga konsistensi dan menghindari duplikasi kode.