Docker 與 Python:容器化部署應用,實現快速發布與彈性伸縮
以下是一個簡單的 Flask 應用
# app.py - 一個簡單的Flask應用
from flask import Flask
import osapp = Flask(__name__)@app.route("/")
def hello():env = os.environ.get('FLASK_ENV', "local")print('environ---', os.environ.get('FLASK_ENV', "local"))return "Hello Docker World!" + f"env={env}"@app.route("/health")
def health():return {"status": "healthy"}if __name__ == '__main__':app.run(host='0.0.0.0', port=5000)
同目錄下有個 requirements.txt 文件,項目依賴文件
Flask==2.3.3
gunicorn==21.2.0
接下來是 Dockerfile ,這是個構建容器的文件
# 選擇基礎鏡像 -python 3.9 官方鏡像
FROM python:3.9-slim# 設置工作目錄
WORKDIR /app# 復制依賴文件
COPY requirements.txt .# 安裝 Python依賴
RUN pip install --no-cache-dir -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/# 復制應用代碼
COPY . .# 暴露端口
EXPOSE 5000# 定義啟動命令
CMD ["python", "app.py"]# 也可以借助 gunicorn 替代 Flask 開發服務器
# CMD ["gunicorn", "--bind", "0.0.0.0:5000", "app:app"]
接下來構建鏡像
# 構建Docker鏡像
docker build -t my-python-app .# 運行容器
docker run -p 5000:5000 my-python-app
然后訪問我們的接口
http://123.57.31.157:5000/http://123.57.31.157:5000/health
然后是 docker-compose.yml 方便本地開發
services:web:image: my-python-app:latestports:- "5000:5000"environment:- FLASK_ENV=development