
15964
Dockerfile là một tập lệnh chứa các hướng dẫn để xây dựng một Docker image. Dưới đây là các thành phần chính và cách sử dụng chúng:
- FROM
FROM <image>:<tag>
- Đây là lệnh bắt buộc và phải là lệnh đầu tiên trong Dockerfile (trừ ARG).
- Xác định image cơ sở để bắt đầu xây dựng.
- Ví dụ:
FROM ubuntu:20.04
hoặcFROM python:3.9-alpine
- LABEL
LABEL <key>=<value>
- Thêm metadata vào image.
- Ví dụ:
LABEL version="1.0" maintainer="example@email.com"
- ENV
ENV <key>=<value>
- Đặt biến môi trường.
- Ví dụ:
ENV PATH=/usr/local/bin:$PATH
- ARG
ARG <name>[=<default value>]
- Định nghĩa biến được sử dụng trong quá trình build.
- Ví dụ:
ARG VERSION=latest
- WORKDIR
WORKDIR /path/to/directory
- Đặt thư mục làm việc cho các lệnh RUN, CMD, ENTRYPOINT, COPY và ADD tiếp theo.
- Ví dụ:
WORKDIR /app
- COPY
COPY <src> <dest>
- Sao chép files hoặc thư mục từ máy host vào image.
- Ví dụ:
COPY . /app
- ADD
ADD <src> <dest>
- Tương tự COPY, nhưng có thêm chức năng như giải nén tệp tar hoặc tải file từ URL.
- Ví dụ:
ADD https://example.com/big.tar.xz /usr/src/things/
- RUN
RUN <command>
- Thực thi lệnh và tạo một layer mới.
- Ví dụ:
RUN apt-get update && apt-get install -y python3
- CMD
CMD ["executable","param1","param2"]
- Cung cấp lệnh mặc định để chạy container.
- Chỉ có thể có một CMD trong Dockerfile.
- Ví dụ:
CMD ["python", "app.py"]
- ENTRYPOINT
ENTRYPOINT ["executable", "param1", "param2"]
- Cấu hình container để chạy như một executable.
- Ví dụ:
ENTRYPOINT ["python", "app.py"]
- EXPOSE
EXPOSE <port> [<port>/<protocol>...]
- Khai báo cổng mà container sẽ lắng nghe khi chạy.
- Ví dụ:
EXPOSE 80
hoặcEXPOSE 80/tcp
- VOLUME
VOLUME ["/data"]
- Tạo một mount point và đánh dấu nó là chứa dữ liệu được mount từ bên ngoài.
- Ví dụ:
VOLUME ["/var/log"]
- USER
USER <user>[:<group>]
- Đặt user (hoặc UID) và tùy chọn USER group (hoặc GID) để chạy các lệnh tiếp theo.
- Ví dụ:
USER nginx
- HEALTHCHECK
HEALTHCHECK [OPTIONS] CMD command
- Kiểm tra sức khỏe của container.
- Ví dụ:
HEALTHCHECK --interval=5m --timeout=3s CMD curl -f http://localhost/ || exit 1
- SHELL
SHELL ["executable", "parameters"]
- Ghi đè shell mặc định được sử dụng cho lệnh shell form của RUN, CMD, ENTRYPOINT.
- Ví dụ:
SHELL ["/bin/bash", "-c"]
- STOPSIGNAL
STOPSIGNAL signal
- Đặt tín hiệu hệ thống để gửi đến container để thoát.
- Ví dụ:
STOPSIGNAL SIGTERM
Một Dockerfile điển hình có thể kết hợp nhiều lệnh này để xây dựng một image phức tạp. Ví dụ:
FROM python:3.9-slim
LABEL maintainer="example@email.com"
ENV PYTHONUNBUFFERED 1
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
Mỗi lệnh trong Dockerfile tạo ra một layer mới trong image. Việc hiểu và sử dụng đúng các lệnh này sẽ giúp bạn tạo ra các Docker images hiệu quả và tối ưu.
Danh mục
Bài viết liên quan

Docker là gì?
30.09.2024
Author: | ADMIN |
---|
Docker là một nền tảng mã nguồn mở giúp phát triển, vận chuyển và chạy các ứng dụng một cách dễ dàng. Bài viết này sẽ giúp bạn hiểu các khái niệm cơ bản về Docker, và hướng dẫn từng bước để tạo một ứng dụng Flask chạy trên Docker container.
Bài viết khác

Blade Basics
01.08.2024
Author: | ADMIN |
---|
Khám phá Blade trong Laravel: từ if-else, loops, kế thừa layout đến include sub-views. Giúp code gọn gàng, dễ quản lý và bảo trì hơn!

9 Mẹo Hữu Ích Khi Sử Dụng Blade Trong Laravel
01.08.2024
Author: | ADMIN |
---|
Khám phá 9 mẹo Blade giúp bạn viết code Laravel sạch, tối ưu và chuyên nghiệp hơn. Từ @forelse, @auth, @guest, đến format ngày, tối ưu SEO – tất cả trong một bài viết súc tích, dễ áp dụng!

Hiển thị giá trị trong Blade
01.08.2024
Author: | ADMIN |
---|
Hướng dẫn hiển thị biến trong Laravel Blade: escape HTML tự động, hiển thị dữ liệu thô, giá trị mặc định và cách truy xuất mảng, đối tượng. Giúp bạn tối ưu hiển thị dữ liệu một cách an toàn!