การทำ CI/CD ร่วมกับ docker

จาก วิกิพีเดียว กองแผนงาน มช.
ไปยังการนำทาง ไปยังการค้นหา

การทำ CI/CD กับ Docker สามารถทำได้โดยการตั้งค่า pipeline ที่จะทำการ build, test, และ deploy Docker images โดยอัตโนมัติเมื่อมีการเปลี่ยนแปลงใน code repository นี่คือตัวอย่างวิธีการตั้งค่า CI/CD ด้วย Docker โดยใช้ GitHub Actions เป็นตัวอย่าง:

ขั้นตอนการตั้งค่า CI/CD

1. เตรียม Repository

สร้างหรือใช้ repository ที่มีอยู่แล้วบน GitHub และสร้าง Dockerfile สำหรับการ build image ของคุณ ตัวอย่าง:

Dockerfile

  1. Dockerfile

FROM php:7.4-apache

  1. Install necessary extensions and tools

RUN docker-php-ext-install pdo pdo_mysql mysqli

  1. Copy application code to /var/www/html

COPY ./www /var/www/html

  1. Expose port 80

EXPOSE 80 สร้างโครงสร้าง directory ดังนี้:

my_project/ ├── www/ │ └── index.php └── Dockerfile

2. สร้าง GitHub Actions Workflow

สร้าง directory และไฟล์สำหรับ workflow:

mkdir -p .github/workflows touch .github/workflows/ci-cd.yml

3. แก้ไขไฟล์ ci-cd.yml ดังนี้:

yaml

name: CI/CD Pipeline

on:

 push:
   branches:
     - main
 pull_request:
   branches:
     - main

jobs:

 build:
   runs-on: ubuntu-latest
   steps:
   - name: Checkout code
     uses: actions/checkout@v2
   - name: Set up Docker Buildx
     uses: docker/setup-buildx-action@v1
   - name: Login to Docker Hub
     uses: docker/login-action@v2
     with:
       username: $แม่แบบ:Secrets.DOCKER USERNAME
       password: $แม่แบบ:Secrets.DOCKER PASSWORD
   - name: Build and push Docker image
     uses: docker/build-push-action@v3
     with:
       context: .
       push: true
       tags: myusername/myapp:latest
   - name: Deploy to Production Server
     if: github.ref == 'refs/heads/main'
     run: |
       echo "Deploying to production server"
       ssh user@your_server 'docker pull myusername/myapp:latest && docker-compose -f /path/to/docker-compose.yml up -d'

4. ตั้งค่า Secrets บน GitHub

ไปที่หน้า settings ของ repository บน GitHub และเลือก "Secrets and variables" > "Actions" จากนั้นเพิ่มค่า secrets ที่ต้องการ:

DOCKER_USERNAME: Docker Hub username ของคุณ

DOCKER_PASSWORD: Docker Hub password ของคุณ

5. ตั้งค่า Docker Compose สำหรับ Production Server

สร้างไฟล์ docker-compose.yml บน server ของคุณ:

yaml

version: '3.8'

services:

 web:
   image: myusername/myapp:latest
   container_name: php_web
   ports:
     - "80:80"
   volumes:
     - /path/to/www:/var/www/html

ขั้นตอนทั้งหมด

เตรียม Repository: สร้าง repository และ Dockerfile

สร้าง Workflow: สร้างและตั้งค่าไฟล์ ci-cd.yml ใน .github/workflows

ตั้งค่า Secrets: ตั้งค่า Docker Hub credentials บน GitHub

ตั้งค่า Production Server: ตั้งค่า Docker Compose บน production server

ทดสอบ: Push code ไปยัง branch main และตรวจสอบว่า pipeline ทำงานตามที่คาดหวัง

การทำงานของ Pipeline

Checkout Code: ดึง code จาก repository

Set up Docker Buildx: เตรียม Docker build environment

Login to Docker Hub: ล็อกอินเข้าสู่ Docker Hub

Build and Push Docker Image: Build Docker image และ push ไปที่ Docker Hub

Deploy to Production: เมื่อ push ไปยัง branch main, จะทำการ pull Docker image ล่าสุดและ deploy โดยใช้ Docker Compose บน production server

นี่คือขั้นตอนการตั้งค่า CI/CD แบบพื้นฐานด้วย Docker โดยใช้ GitHub Actions หวังว่าตัวอย่างนี้จะช่วยให้คุณสามารถเริ่มต้นใช้งาน CI/CD กับ Docker ได้อย่างง่ายดาย!