1. Chuẩn bị môi trường
| Bước | Lệnh | Mô tả |
|---|
| Cài git | sudo yum install git -y | Dùng để clone mã nguồn |
| Tạo thư mục | mkdir -p docker_images/weatherapp | Chứa Dockerfile và source |
| Di chuyển | cd docker_images/weatherapp | Di chuyển vào thư mục |
| Clone code | git clone <url> src | Lấy source code ứng dụng |
2. Chuẩn bị Dockerfile
## Image dành cho Weather App
FROM node:12
LABEL org.label-schema.version="v1.1"
RUN mkdir -p /var/node
COPY ./src /var/node
WORKDIR /var/node
RUN npm install
EXPOSE 3000
CMD ["npm", "start"]
| Chỉ Dẫn | Ý Nghĩa |
|---|
FROM | Chọn image nền (node:12) |
LABEL | Thêm metadata cho image |
RUN | Chạy lệnh shell khi build (tạo thư mục, cài npm) |
COPY | Sao chép code vào container |
WORKDIR | Đặt thư mục làm việc mặc định |
EXPOSE | Mở cổng container (3000) |
CMD | Lệnh chạy khi container khởi động |
COPY đơn giản hơn ADD. Nếu cần tải từ URL → dùng ADD.
3. Build Image từ Dockerfile
docker image build -t linuxacademy/weather-app:v1 .
t: Tên và tag của image
.: Thư mục hiện tại chứa Dockerfile
4. Chạy container từ image đã tạo
docker container run -d -p 8081:3000 --name weather-app1 linuxacademy/weather-app:v1
| Tuỳ chọn | Ý nghĩa |
|---|
-d | Chạy dưới chế độ nền (detached) |
-p 8081:3000 | Chuyển tiếp cổng 8081 trên host → 3000 của container |
--name weather-app1 | Đặt tên container |
5. Kiểm tra hoạt động container
curl localhost:8081
Nhận về HTML → Ứng dụng đang chạy ổn định.
Note
| Mục tiêu | Ghi chú |
|---|
| CMD là singleton | Chỉ có một dòng CMD hợp lệ trong Dockerfile |
| ENTRYPOINT khác CMD | ENTRYPOINT không dễ ghi đè bằng docker run như CMD |
| Mỗi chỉ dẫn tạo ra một layer | Các layer được cache để tăng tốc độ build |