Dockerfile là gì?
Dockerfile là một tệp văn bản chứa tập hợp các lệnh. Khi chạy, chúng ta có thể xây dựng một image. Sau đó, chúng ta có thể chạy container với image đã xây dựng.
Tại sao chúng ta cần nó?
Chúng ta có thể sử dụng các image có sẵn như Postgres, nhưng đối với các dịch vụ cốt lõi, chúng ta phải tự xây dựng image. Để đóng gói chúng, chúng ta cần tạo Dockerfile. Nhờ sự đơn giản của nó, chúng ta có thể bắt đầu xây dựng image với vài lệnh cơ bản.
Các lệnh cơ bản
Các lệnh sau là thành phần cơ bản để xây dựng một image:
- FROM: Chỉ định image cơ sở để bắt đầu quá trình. Ví dụ: linux-alpine.
- RUN và CMD: Chỉ định các lệnh để chạy. RUN sẽ được thực thi khi xây dựng image, CMD sẽ được thực thi khi khởi chạy image.
- ADD: Sao chép các tệp từ nguồn vào đích trong container.
- ENV: Đặt các biến môi trường.
- ARG: Các biến chỉ có sẵn khi xây dựng image.
- EXPOSE: Chỉ định cổng mà container sẽ lắng nghe.
- WORKDIR: Đặt thư mục làm việc cho các lệnh như RUN.
Xây dựng một image
Bây giờ bạn đã hiểu các lệnh cơ bản, hãy xem ví dụ sau:
# syntax=docker/dockerfile:1
FROM node:18-alpine
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
EXPOSE 3000
Với image cơ sở node, nó sẽ sao chép tất cả từ /app vào /app. Tiếp theo, nó sẽ chạy yarn install để cài đặt các phụ thuộc. Sau khi hoàn thành cài đặt, quá trình xây dựng kết thúc.
Để xây dựng image, chạy:
docker build -t first-try .
Điều này sẽ xây dựng một image. Nếu bạn cung cấp ., Docker sẽ tìm Dockerfile trong thư mục hiện tại. Sau khi xây dựng xong, nó sẽ gán nhãn cho image bạn cung cấp, trong trường hợp này là “first-try”.
Khởi chạy một container
Sau khi đã có image Docker, chúng ta có thể chạy container. Chạy:
docker run -d first-try
Tùy chọn -d để chạy chế độ nền. Để xem trạng thái container của bạn, chạy docker ps.
Kết luận
Bây giờ, bạn có thể xây dựng image và chạy container với image của mình. Nếu cần chạy phần mềm phức tạp hơn với cơ sở dữ liệu hoặc bộ đệm, Docker cung cấp công cụ docker compose để chạy mã đa container. Chúng ta sẽ tìm hiểu về nó trong bài viết tiếp theo.
Để xem bài viết gốc, vui lòng truy cập link này.