ساختمان و خودکار سازی استقرار یک برنامه Flask با Docker ، Github و CI/CD

مقدمه
این پروژه نحوه ساخت ، کانتینر کردن و استقرار یک برنامه ساده فلاسک را با Docker ، با استفاده از GitHub برای کنترل نسخه و اقدامات GitHub برای ادغام مداوم/استقرار مداوم (CI/CD) نشان می دهد. شما یاد خواهید گرفت که چگونه:
- یک برنامه وب ساده فلاسک ایجاد کنید.
- برنامه را با استفاده از Docker Containerize کنید.
- کنترل نسخه را با Git و GitHub تنظیم کنید.
- خطوط لوله CI/CD را با استفاده از اقدامات GitHub برای ساخت و استقرار تصویر Docker پیاده سازی کنید.
⚙ پیش نیازها
قبل از شروع ، اطمینان حاصل کنید که ابزارهای زیر را نصب کرده اید:
- پیتون: یک زبان برنامه نویسی برای ساخت برنامه های وب.
- فلاسک: یک چارچوب وب سبک وزن پایتون.
- اسکله: سکویی برای توسعه ، حمل و نقل و اجرای برنامه ها در ظروف.
- گودال: یک سیستم کنترل نسخه برای ردیابی تغییرات در کد.
- لوب: بستری برای میزبانی و اشتراک مخازن کد.
- قطب: یک رجیستری مبتنی بر ابر برای به اشتراک گذاشتن تصاویر Docker.
اگر این موارد را نصب نکرده اید ، برای دستورالعمل های نصب به وب سایت های رسمی مربوطه مراجعه کنید.
✅ مرحله 1: یک برنامه فلاسک ساده ایجاد کنید
-
یک پوشه جدید برای پروژه ایجاد کنید:
mkdir flask-devops-app cd flask-devops-app
-
یک محیط مجازی Python را تنظیم کنید:
python -m venv venv
-
محیط مجازی را فعال کنید:
source venv/Scripts/activate # On Windows use: venv\Scripts\activate
-
فلاسک را نصب کنید:
pip install flask
-
ایجاد
app.py
پرونده:# app.py from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return "Hello DevOps!" if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)
-
برنامه را به صورت محلی اجرا کنید:
python app.py
-
بازدید
http://localhost:5000
در مرورگر خود شما باید ببینید"Hello DevOps!"
بشر
✅ مرحله 2: برنامه را کانتینر کنید
-
ایجاد a
Dockerfile
در همان پوشه:# Dockerfile FROM python:3.9-slim WORKDIR /app COPY requirements.txt requirements.txt RUN pip install -r requirements.txt COPY . . CMD ["python", "app.py"]
-
تولید کردن
requirements.txt
:pip freeze > requirements.txt
-
ایجاد a
.dockerignore
پرونده:__pycache__/ *.pyc venv/
-
تصویر Docker را بسازید:
docker build -t flask-devops-app .
-
ظرف Docker را اجرا کنید:
docker run -p 5000:5000 flask-devops-app
-
باز
http://localhost:5000
دوباره و دیدن برنامه خود در داخل یک ظرف Docker.
✅ مرحله 3: تنظیم کنترل نسخه
ابزار: git + github
-
یک مخزن git را آغاز کنید:
git init
-
ایجاد a
.gitignore
پرونده:venv/ __pycache__/ *.pyc
-
پرونده های خود را مرتکب شوید:
git add . git commit -m "Initial commit"
-
یک مخزن GitHub ایجاد کرده و آن را به repo محلی خود پیوند دهید:
git remote add origin https://github.com/YOUR_USERNAME/flask-devops-app.git git branch -M main git push -u origin main
✅ مرحله 4: CI/CD را با اقدامات GitHub پیاده سازی کنید
ابزارها: اقدامات GitHub ، Docker Hub
-
ایجاد a
.github/workflows/docker-publish.yml
پرونده:mkdir -p .github/workflows touch .github/workflows/docker-publish.yml
-
ویرایش
docker-publish.yml
پرونده و محتوای زیر را اضافه کنید:# .github/workflows/docker-publish.yml name: Build and Push Docker Image on: push: branches: [ main ] jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Log in to Docker Hub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Build and push image uses: docker/build-push-action@v5 with: context: . push: true tags: YOUR_DOCKERHUB_USERNAME/flask-devops-app:latest
-
اعتبار Docker Hub را به عنوان اسرار GitHub اضافه کنید:
- به مخزن GitHub خود بروید تنظیمات → اسرار و متغیرها → اقدامات
- اسرار زیر را اضافه کنید:
-
DOCKER_USERNAME
نام کاربری Hub Docker Hub شما -
DOCKER_PASSWORD
→ رمز عبور Docker Hub یا نشانه دسترسی
-
-
دوباره کد خود را فشار دهید:
git add . git commit -m "Add CI/CD workflow" git push
اقدامات GitHub اکنون به طور خودکار تصویر Docker شما را می سازد و هر زمان که به آن فشار می آورید ، آن را به Docker Hub سوق می دهد main
شاخه
نتیجه نهایی
- ✅ یک برنامه فلاسک زنده که در داخل یک ظرف Docker اجرا می شود.
- code کد منبع در GitHub میزبان است.
- ✅ تصویر Docker به طور خودکار ساخته می شود و در هر تعهد به Docker Hub رانده می شود.
🎯 نتیجه گیری
تبریک می گویم! شما با موفقیت یک برنامه Flask ساده ایجاد کرده اید ، آن را با Docker Contained ، کنترل نسخه با Git و Github ، و CI/CD را با اقدامات GitHub پیاده سازی کرده اید. این پروژه یک گام اساسی در ساخت سیستم های مقیاس پذیر و خودکار در DevOps است.
عیب یابی
- اگر داکر در حال اجرا نیست: اطمینان حاصل کنید که دسک تاپ Docker باز و در حال اجرا است.
- اگر با اقدامات GitHub با مشکلات مجوز روبرو شدید: اعتبارنامه Docker Hub خود را در اسرار Github بررسی کنید.
- اگر برنامه فلاسک بارگیری نشود: اطمینان حاصل کنید که از درگاه صحیح استفاده می کنید و ظرف Docker در حال اجرا است. نیازها!