亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用Docker部署Python的Flask項目最新教程

 更新時間:2025年08月29日 10:31:17   作者:泥巴客  
Flask是一個基于Python的Web框架,它的核心非常簡單且易于擴展,這篇文章主要介紹了使用Docker部署Python的Flask項目的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、構(gòu)建運行 Docker 容器

1. 查找合適鏡像

打開 https://hub.docker.com/_/python/tags 找到合適自己的鏡像,我找到的是 python:3.13.3-alpine3.22

根據(jù)環(huán)境選擇鏡像:

  • 開發(fā)環(huán)境:使用 python:3.12-buster 或完整鏡像,便于調(diào)試和安裝依賴。
  • 生產(chǎn)環(huán)境:使用 python:3.12-slim 或 python:3.12-alpine,減少攻擊面和鏡像體積。

2.本地docker 拉取鏡像

docker pull python:3.13.3-alpine3.22

 docker images

3.項目配置

1. python項目下生成 requirements.txt 依賴文件

pip freeze > requirements.txt

文件內(nèi)容:

2. 生成Dockerfile文件

FROM python:3.12.10-alpine3.22

# 設(shè)置工作目錄
WORKDIR /app

COPY . .

RUN adduser -D appuser

# 使用國內(nèi)鏡像源并增加超時時間
RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

# 復(fù)制依賴文件并安裝(添加超時和重試)
COPY requirements.txt .
RUN pip install --no-cache-dir \
    --timeout 100 \
    gunicorn>=21.2.0 \
    -r requirements.txt


# 驗證安裝(關(guān)鍵?。?
RUN which gunicorn && gunicorn --version

USER appuser


# 啟動命令
CMD ["gunicorn", "-b", "0.0.0.0:5000", "app:app", "--workers", "4", "--threads", "2"]

代碼解釋:

    1. RUN pip config set global.index-url 設(shè)置國內(nèi)鏡像,更快下載依賴
    1. COPY . . 正式環(huán)境部署時,采用 代碼打包進(jìn)鏡像,數(shù)據(jù)用數(shù)據(jù)卷 的方案
    • 避免因宿主機文件變動導(dǎo)致服務(wù)異常
    • 容器與宿主機文件系統(tǒng)隔離,減少攻擊面。
    • 日志、配置等數(shù)據(jù)需持久化存儲。
    1. gunicorn>=21.2.0 強制安裝 Gunicorn(不依賴 requirements.txt)
    • 強制安裝 Gunicorn(不依賴 requirements.txt),開發(fā)環(huán)境不用安裝 Gunicorn
    1. CMD [“gunicorn”, “-b”, “0.0.0.0:5000”, “app:app”, “–workers”, “4”, “–threads”, “2”]
    • Gunicorn 啟動 Flask 應(yīng)用
    • -b 0.0.0.0:5000 綁定(bind)地址和端口
    • 讓 Gunicorn 服務(wù)器在容器內(nèi)部的 5000 端口接收外部請求
    • app:app 模塊名:應(yīng)用實例名
      • 第一個 app:Python 文件或模塊名(如 app.py)。
      • 第二個 app:Flask 應(yīng)用實例名(通常在代碼中定義為 app = Flask(name))。
    • –workers 4
      • 啟動 4 個 worker 進(jìn)程(即 4 個獨立的 Python 進(jìn)程)
    • –threads 2
      • 每個 worker 進(jìn)程啟動 2 個線程。

適用場景

這條命令適合 I/O 密集型的 Flask 應(yīng)用,例如:

  • API 接口服務(wù)(大量 HTTP 請求)。
  • 數(shù)據(jù)庫 CRUD 操作(等待數(shù)據(jù)庫響應(yīng)時線程可處理其他請求)。
  • 調(diào)用外部 API 的服務(wù)(如調(diào)用第三方支付、短信等)。

3.忽略不必要文件

創(chuàng)建 .dockerignore 文件排除不需要的文件:

__pycache__
*.pyc
*.pyo
*.pyd
.venv
Dockerfile
.git

4. 構(gòu)建鏡像

在項目根目錄執(zhí)行:

 docker build -t flask-api:prod.v1.1 .
  • -t:指定鏡像標(biāo)簽(格式:[倉庫名]:[版本號])
  • .:指定構(gòu)建上下文(當(dāng)前目錄)

4. 運行容器

docker rm -f flask-api && docker run -d -p 5000:5000  --name flask-api flask-api:prod
  • 啟動前刪除 flask-api 容器
  • -d:后臺運行
  • -p 5000:5000 端口映射(主機:容器)

5.測試

curl http://localhost:5000

二、常見問題與解決方案

  1. 問題:容器啟動后立即退出。
    原因:主進(jìn)程(如 app.py)未保持運行(如腳本執(zhí)行完就退出)。
    解決:確保應(yīng)用持續(xù)監(jiān)聽端口(如 Flask/Django 服務(wù))。

  2. 問題:依賴安裝失?。ㄈ?Alpine 鏡像缺少編譯工具)。
    解決:在 Dockerfile 中添加編譯依賴:

    RUN apk add --no-cache gcc musl-dev
    
  3. 問題:修改代碼后需重新構(gòu)建整個鏡像。
    解決:利用 Docker 緩存,先復(fù)制 requirements.txt 并安裝依賴,再復(fù)制代碼。

總結(jié) 

到此這篇關(guān)于使用Docker部署Python的Flask項目的文章就介紹到這了,更多相關(guān)Docker部署Python Flask項目內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論