Build Arguments là gì?
- Cho phép truyền biến tại thời điểm build image.
- Sử dụng với flag
build-argkhi chạydocker image build. - Có thể định nghĩa nhiều build args cùng lúc.
Cách sử dụng ARG trong Dockerfile
## Thiết lập biến build ARG có tên là SRC_DIR
ARG SRC_DIR=/var/node
## Dùng biến ARG bên trong các chỉ dẫn
RUN mkdir -p $SRC_DIR
ADD ./src $SRC_DIR
WORKDIR $SRC_DIR
ARG chỉ có hiệu lực trong thời gian build, không tồn tại trong container runtime như ENV.
Build Image với Build Arg
docker image build \\
-t linuxacademy/weather-app:v3 \\
--build-arg SRC_DIR=/var/code \\
.
Dockerfile mẫu trong bài học
FROM node:12
LABEL org.label-schema.version="v1.1"
ARG SRC_DIR=/var/node
RUN mkdir -p $SRC_DIR
ADD ./src $SRC_DIR
WORKDIR $SRC_DIR
RUN npm install
EXPOSE 3000
CMD ["npm", "start"]
Kiểm tra lại kết quả sau khi build
docker image inspect linuxacademy/weather-app:v3 | grep WorkingDir
Giá trị WORKDIR không đúng, lệnh npm install sẽ thất bại do không có mã nguồn để xử lý.
Chạy container từ image vừa build
docker container run -d \\
--name weather-app \\
-p 8085:3000 \\
linuxacademy/weather-app:v3
Kiểm tra kết quả:
curl localhost:8085
Nếu trả về HTML → container hoạt động đúng.
Tổng kết
- Cách dùng
ARGtrong Dockerfile để tạo biến dùng trong quá trình build - Ghi đè giá trị mặc định của build arg bằng
build-argkhi chạydocker build - Build thất bại nếu các lệnh như
npm installkhông tìm thấy mã nguồn (do WORKDIR sai)