Hướng Dẫn Xây Dựng Hình Ảnh Docker Windows Trên GitHub Actions
Bạn có bao giờ gặp phải tình huống cần xây dựng hình ảnh Docker cho Windows nhưng lại không có máy tính Windows hỗ trợ? Đừng lo, trong bài hướng dẫn này, tôi sẽ hướng dẫn bạn cách tận dụng GitHub Actions để xây dựng hình ảnh container Windows mà không cần phải có môi trường Windows cục bộ. Cùng khám phá nhé!
Tại Sao Nên Tạo Hình Ảnh Docker Windows?
Mặc dù các container Linux rất phổ biến, nhưng container Windows vẫn cần thiết cho một số trường hợp đặc biệt, bao gồm:
- Ứng dụng .NET Framework: Các ứng dụng sử dụng nền tảng .NET Frameword thường chỉ chạy tốt trên hệ thống Windows.
- Ứng dụng Dành Riêng Cho Windows: Những ứng dụng yêu cầu tính năng hay API cụ thể của Windows.
- Ứng dụng Cũ: Các ứng dụng Windows cũ cần phải được chứa trong container để đảm bảo khả năng tương thích.
- Yêu Cầu Tính Năng Windows: Một số ứng dụng yêu cầu các tính năng đặc biệt có trên nền tảng Windows.
Điều Kiện Tiên Quyết
Trước khi bắt đầu, bạn cần:
- Tài Khoản GitHub: Để lưu trữ mã nguồn và quản lý workflow.
- Tài Khoản Docker Hub: Để quản lý và lưu trữ hình ảnh Docker.
- Kho Lưu Trữ Sẵn Có: Bao gồm tệp Dockerfile và mã ứng dụng của bạn.
- Thông Tin Đăng Nhập Docker Hub: Để thực hiện việc đăng nhập và đẩy hình ảnh.
Tệp Dockerfile Mẫu
Dưới đây là một ví dụ về Dockerfile thiết lập môi trường Python trên Windows:
# Sử dụng hình ảnh Windows Server Core mới hơn
FROM mcr.microsoft.com/windows/servercore:ltsc2022
# Thiết lập shell thành PowerShell
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
# Tải xuống và cài đặt Python
RUN [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
Invoke-WebRequest -Uri https://www.python.org/ftp/python/3.9.5/python-3.9.5-amd64.exe -OutFile python-3.9.5-amd64.exe ; \
Start-Process python-3.9.5-amd64.exe -ArgumentList '/quiet InstallAllUsers=1 PrependPath=1' -Wait ; \
Remove-Item python-3.9.5-amd64.exe
# Xác minh cài đặt Python
RUN python --version
# Thiết lập thư mục làm việc
WORKDIR /app
# Sao chép tệp ứng dụng vào container
COPY . /app
# Chỉ định lệnh khởi động
CMD ["python", "app.py"]
Giải thích về Dockerfile này:
- Sử dụng hình ảnh cơ sở
mcr.microsoft.com/windows/servercore:ltsc2022
. - Cài đặt Python phiên bản 3.9.5.
- Đặt thư mục làm việc là
/app
. - Sao chép tất cả các tệp ứng dụng vào vùng chứa.
- Chỉ định lệnh khởi động ứng dụng là
python app.py
.
Thiết Lập GitHub Actions
Để thiết lập GitHub Actions cho việc xây dựng hình ảnh Windows Docker, bạn cần tạo một tệp .github/workflows/build.yml
trong kho lưu trữ của mình:
name: Build Windows Docker Image
on:
push:
branches: [ main ]
workflow_dispatch:
jobs:
build:
runs-on: windows-latest
environment: prod
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and Push
shell: powershell
run: |
docker build . -t ${{ secrets.DOCKERHUB_USERNAME }}/windows-python:latest
docker push ${{ secrets.DOCKERHUB_USERNAME }}/windows-python:latest
Cách Hoạt Động Của GitHub Actions
Quy trình làm việc sẽ thực hiện các bước sau:
- Chạy trên
windows-latest
được cung cấp bởi GitHub Actions. - Kiểm tra mã nguồn từ kho lưu trữ của bạn.
- Đăng nhập vào Docker Hub với thông tin đăng nhập mà bạn đã cấu hình.
- Xây dựng hình ảnh Docker Windows.
- Đẩy hình ảnh đã xây dựng lên Docker Hub.
- Cung cấp một bản tóm tắt hình ảnh để xác minh.
Lưu ý rằng trong ví dụ này, chúng ta sử dụng thẻ latest
để đơn giản hóa. Trong môi trường sản xuất, bạn nên sử dụng thẻ theo phiên bản và tránh mã cứng tên hình ảnh.
Những Điều Cần Lưu Ý
- Kích Thước Hình Ảnh: Hình ảnh Docker Windows thường lớn hơn nhiều so với các hình ảnh Linux. Hãy chuẩn bị đủ dung lượng cho kho lưu trữ của bạn.
- Thời Gian Xây Dựng: Thời gian xây dựng container Windows thường lâu hơn so với container Linux. Hãy lưu ý điều này trong kế hoạch triển khai.
- Khả Năng Tương Thích: Đảm bảo rằng phiên bản hình ảnh cơ sở bạn sử dụng phù hợp với môi trường triển khai của bạn.
Kết Luận
Sử dụng GitHub Actions, bạn có thể xây dựng hình ảnh Docker cho Windows mà không cần một máy tính Windows cục bộ. Đây là một giải pháp rất hữu ích cho những nhóm phát triển hoặc lập trình viên làm việc trên nhiều nền tảng khác nhau. Nếu bạn có bất kỳ câu hỏi hay thắc mắc nào, hãy để lại ý kiến ở bên dưới!
Cảm ơn bạn đã theo dõi bài viết!
source: viblo