3.1 Tạo Dockerfile cho frontend (ReactJS)
Trong bước này, chúng ta sẽ tạo Dockerfile cho từng trong ba service của ứng dụng nhiều container của chúng ta: frontend sử dụng ReactJS, backend sử dụng Python (Flask) và cơ sở dữ liệu PostgreSQL. Dockerfile xác định các hướng dẫn để tạo Docker image cho mỗi service.
Tạo file Dockerfile trong thư mục frontend:
cd frontend
touch Dockerfile
Nội dung Dockerfile cho frontend:
# Sử dụng base image node
FROM node:14
# Thiết lập thư mục làm việc
WORKDIR /app
# Sao chép package.json và package-lock.json để cài đặt dependencies
COPY package*.json ./
# Cài đặt dependencies
RUN npm install
# Sao chép các file còn lại của project
COPY . .
# Thiết lập port 3000
EXPOSE 3000
# Chạy ứng dụng
CMD ["npm", "start"]
Dockerfile này thực hiện các bước sau:
- Sử dụng base image
node:14
. - Thiết lập thư mục làm việc
/app
. - Sao chép các file
package.json
vàpackage-lock.json
. - Cài đặt dependencies bằng
npm install
. - Sao chép tất cả các file của project vào thư mục làm việc.
- Mở port
3000
để truy cập ứng dụng. - Chạy ứng dụng bằng
npm start
.
3.2 Tạo Dockerfile cho backend (Flask)
Tạo file Dockerfile trong thư mục backend:
cd backend
touch Dockerfile
Nội dung Dockerfile cho backend:
# Sử dụng base image python
FROM python:3.12
# Thiết lập thư mục làm việc
WORKDIR /app
# Sao chép requirements.txt để cài dependencies
COPY requirements.txt ./
# Cài dependencies
RUN pip install --no-cache-dir -r requirements.txt
# Sao chép các file khác của dự án
COPY . .
# Mở cổng 5000
EXPOSE 5000
# Chạy ứng dụng
CMD ["python", "run.py"]
Dockerfile này thực hiện các bước sau:
- Sử dụng base image
python:3.12
. - Thiết lập thư mục làm việc
/app
. - Sao chép file
requirements.txt
. - Cài dependencies bằng
pip install
. - Sao chép toàn bộ các file dự án vào thư mục làm việc.
- Mở cổng
5000
để truy cập ứng dụng. - Chạy ứng dụng bằng
python run.py
.
3.3 Tạo Dockerfile cho cơ sở dữ liệu (PostgreSQL)
Đối với cơ sở dữ liệu PostgreSQL, chúng ta sẽ sử dụng official image, vì vậy việc tạo Dockerfile riêng không cần thiết. Thay vào đó, chúng ta sẽ cấu hình PostgreSQL thông qua docker-compose.yml
.
3.4 Build và test Docker images
Sau khi tạo Dockerfile cho frontend và backend, việc test quá trình build là rất quan trọng.
Build Docker image cho frontend:
cd frontend
docker build -t task_management_frontend .
Build Docker image cho backend:
cd ../backend
docker build -t task_management_backend .
Kiểm tra hoạt động của containers:
Chạy container cho frontend:
docker run -p 3000:3000 task_management_frontend
Chạy container cho backend:
docker run -p 5000:5000 task_management_backend
Truy cập vào http://localhost:3000 để kiểm tra hoạt động của frontend và http://localhost:5000 để kiểm tra hoạt động của backend.
GO TO FULL VERSION