0

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

Đăng nhập để bình luận
Avatar
0
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí