Cách xây dựng Windows Docker Images với GitHub Actions
Bạn đã bao giờ cần xây dựng Windows Docker Images nhưng không có quyền truy cập vào máy Windows chưa? Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách tận dụng GitHub Actions để xây dựng hình ảnh container Windows mà không cần môi trường Windows cục bộ. Hãy cùng theo dõi nhé!
Tại sao phải tạo Windows Docker Images?
Trong khi container Linux phổ biến hơn thì container Windows lại cần thiết cho:
- Ứng dụng .NET Framework
- Ứng dụng dành riêng cho Windows
- Các ứng dụng Windows cũ cần chứa trong container
- Các ứng dụng yêu cầu các tính năng dành riêng cho Windows
Điều kiện tiên quyết
Trước khi bắt đầu, bạn cần:
- Một tài khoản GitHub
- Tài khoản Docker Hub
- Kho lưu trữ với Dockerfile và mã ứng dụng của bạn
- Thông tin đăng nhập Docker Hub
Tệp Docker
Hãy cùng xem một Dockerfile mẫu thiết lập môi trường Python trên Windows:
# Use a more recent Windows Server Core image
FROM mcr.microsoft.com/windows/servercore:ltsc2022
# Set shell to PowerShell
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
# Download and install 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
# Verify Python installation
RUN python --version
# Set the working directory
WORKDIR /app
# Copy application files
COPY . /app
# Set the startup command
CMD ["python", "app.py"]
Trong Dockerfile này:
- Sử dụng
mcr.microsoft.com/windows/servercore:ltsc2022
hình ảnh cơ sở - Cài đặt Python 3.9.5
- Đặt thư mục làm việc thành
/app
- Sao chép các tập tin ứng dụng vào vùng chứa
- Chỉ định lệnh khởi động là
python app.py
Thiết lập GitHub Actions
Tạo một tệp .github/workflows/build.yml
trong kho lưu trữ của bạn:
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
Nó hoạt động như thế nào?
- Quy trình làm việc chạy trên trình chạy
windows-latest
được cung cấp bởi GitHub Actions - Nó kiểm tra mã của bạn
- Đăng nhập vào Docker Hub bằng thông tin đăng nhập của bạn
- Xây dựng hình ảnh Windows Docker
- Đẩy hình ảnh vào Docker Hub
- Hiển thị bản tóm tắt hình ảnh để xác minh
Lưu ý rằng trong ví dụ này, để đơn giản, chúng ta sử dụng thẻ latest
. Trong môi trường sản xuất, bạn nên sử dụng thẻ có phiên bản và thay vì mã hóa cứng tên hình ảnh, bạn có thể sử dụng biến môi trường.
Những cân nhắc quan trọng
- Kích thước hình ảnh: Các container Windows thường lớn hơn các container Linux. Hãy lập kế hoạch lưu trữ sổ đăng ký của bạn cho phù hợp.
- Thời gian xây dựng: Việc xây dựng container Windows thường mất nhiều thời gian hơn so với việc xây dựng Linux.
- Khả năng tương thích: Đảm bảo phiên bản hình ảnh cơ sở của bạn phù hợp với môi trường triển khai.
Kết luận
GitHub Actions giúp bạn có thể xây dựng hình ảnh Windows Docker mà không cần môi trường Windows cục bộ. Cách tiếp cận này đặc biệt hữu ích cho các nhóm hoặc nhà phát triển đa nền tảng chủ yếu làm việc trên các hệ thống không phải Windows.
Cảm ơn các bạn đã theo dõi!
All rights reserved
Bình luận