Trong Dockerfile, ARG là một chỉ thị được sử dụng để định nghĩa các biến xác định được sử dụng trong quá trình xây dựng image Docker. Chúng ta có thể truyền các giá trị cho các biến này từ bên ngoài khi thực hiện lệnh docker build.
Cú pháp của ARG trong Dockerfile như sau:
ARG <tên_biến>[=<giá_trị_mặc_định>]
- <tên_biến>: Tên của biến ARG. Bạn có thể sử dụng tên này để tham chiếu biến trong Dockerfile.
- <giá_trị_mặc_định> (tùy chọn): Giá trị mặc định cho biến ARG. Nếu không chỉ định, giá trị mặc định sẽ là trống.
Các biến ARG có thể được sử dụng trong các chỉ thị khác của Dockerfile như FROM, RUN, ENV, LABEL, vv.
Ví dụ, để định nghĩa một biến ARG trong Dockerfile và sử dụng nó trong một chỉ thị RUN, bạn có thể làm như sau:
ARG VERSION=1.0 RUN echo "Building version ${VERSION}"
Khi chạy lệnh docker build, bạn có thể truyền giá trị cho biến ARG bằng cách sử dụng –build-arg:
docker build --build-arg VERSION=2.0 -t tên_image .
Trong ví dụ trên, giá trị của biến ARG VERSION được thiết lập thành 2.0 trong quá trình xây dựng image. Điều này sẽ được sử dụng trong câu lệnh RUN để in ra “Building version 2.0”.
ARG rất hữu ích khi bạn muốn truyền các giá trị cấu hình linh hoạt vào quá trình xây dựng image Docker mà không cần chỉnh sửa trực tiếp Dockerfile.
Các bước
- Viết một Dockerfile với ARG
- Xây dựng image Docker với đối số mặc định
- Chạy container argv:v1
- Truyền đối số trong thời gian build image
- Chạy container argv:v2
Viết một Dockerfile với ARG
Chúng ta đang viết một Dockerfile lặp lại “Chào mừng $WELCOME_USER, đến với Docker World!” trong đó giá trị đối số mặc định cho WELCOME_USER là hocdevops .
FROM alpine:3.9.3 LABEL maintainer="hocdevops" #Setting a default value to Argument WELCOME_USER ARG WELCOME_USER=hocdevops RUN echo "Welcome $WELCOME_USER, to Docker World!" > message.txt CMD cat message.txt
Build image Docker với đối số mặc định
$ docker image build -t arg:v1 .
Chạy container argv:v1
$ docker run arg:v1 Welcome hocdevops, to Docker World!
Truyền đối số(WELCOME_USER) trong lúc build image bằng flag –build-arg
$ docker image build -t arg:v2 --build-arg WELCOME_USER=hocdevops .
Chạy container argv:v2
$ docker run arg:v2 Welcome hocdevops, to Docker World!
LƯU Ý: ARG là lệnh duy nhất có thể xuất hiện trước lệnh FROM, nhưng sau đó giá trị arg chỉ có thể được sử dụng bởi FROM.