Trong Dockerfile, WORKDIR
là một chỉ thị được sử dụng để thiết lập thư mục làm việc (working directory) cho các câu lệnh tiếp theo trong Dockerfile và các tiến trình bên trong container Docker khi chạy.
Cú pháp của WORKDIR trong Dockerfile như sau:
WORKDIR <đường_dẫn>
<đường_dẫn> có thể là đường dẫn tuyệt đối hoặc đường dẫn tương đối đến thư mục mong muốn. Chỉ thị này có thể xuất hiện nhiều lần trong Dockerfile, và thư mục làm việc sẽ được thay đổi cho các câu lệnh sau đó.
Khi một câu lệnh được thực thi trong Dockerfile, đường dẫn của WORKDIR sẽ được sử dụng làm thư mục hiện tại để tìm kiếm các tệp tin và thư mục. Nó cũng ảnh hưởng đến việc mount các thư mục vào container khi chạy bằng cách sử dụng các tham số -v hoặc –mount của lệnh docker run.
Việc sử dụng WORKDIR trong Dockerfile giúp làm cho quá trình xây dựng image và chạy container dễ dàng hơn, bằng cách giảm thiểu việc phải thực hiện đường dẫn đầy đủ cho các lệnh và tệp tin trong Dockerfile và các lệnh docker run tương ứng.
Các bước
- Dockerfile với hướng dẫn WORKDIR
- WORKDIR với đường dẫn tương đối
- WORKDIR với đường dẫn tuyệt đối
- WORKDIR với các biến môi trường là đường dẫn
Dockerfile với WORKDIR
Dockerfile
FROM alpine:3.9.3 LABEL maintainer="hocdevops" WORKDIR /opt
Build Docker image
$ docker build -t workdir:v1 .
Kiểm tra WORKDIR hiện tại bằng cách chạy container
$ docker run -it workdir:v1 pwd
WORKDIR với đường dẫn tương đối
Dockerfile
FROM alpine:3.9.3 LABEL maintainer="hocdevops" WORKDIR /opt RUN echo "Welcome to Docker Labs" > opt.txt WORKDIR folder1 RUN echo "Welcome to Docker Labs" > folder1.txt WORKDIR folder2 RUN echo "Welcome to Docker Labs" > folder2.txt
Build Docker image
$ docker build -t workdir:v2 .
Kiểm tra WORKDIR hiện tại bằng cách chạy container
$ docker run -it workdir:v2 pwd
WORKDIR với đường dẫn tuyệt đối
Dockerfile
FROM alpine:3.9.3 LABEL maintainer="hocdevops" WORKDIR /opt/folder1 RUN echo "Welcome to Docker Labs" > opt.txt WORKDIR /var/tmp/
Build Docker image
$ docker build -t workdir:v3 .
Kiểm tra WORKDIR hiện tại bằng cách chạy container
$ docker run -it workdir:v3 pwd
WORKDIR với các biến môi trường là đường dẫn
Dockerfile
FROM alpine:3.9.3 LABEL maintainer="hocdevops" ENV DIRPATH /myfolder WORKDIR $DIRPATH
Build Docker image
$ docker build -t workdir:v4 .
Kiểm tra WORKDIR hiện tại bằng cách chạy container
$ docker run -it workdir:v4 pwd