การทำ 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
- Dockerfile
FROM php:7.4-apache
- Install necessary extensions and tools
RUN docker-php-ext-install pdo pdo_mysql mysqli
- Copy application code to /var/www/html
COPY ./www /var/www/html
- 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 ได้อย่างง่ายดาย!