欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Docker部署Python的Flask項(xiàng)目最新教程

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

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

1. 查找合適鏡像

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

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

  • 開(kāi)發(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.項(xiàng)目配置

1. python項(xiàng)目下生成 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

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

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


# 驗(yàn)證安裝(關(guān)鍵!)
RUN which gunicorn && gunicorn --version

USER appuser


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

代碼解釋:

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

適用場(chǎng)景

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

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

3.忽略不必要文件

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

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

4. 構(gòu)建鏡像

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

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

4. 運(yùn)行容器

docker rm -f flask-api && docker run -d -p 5000:5000  --name flask-api flask-api:prod
  • 啟動(dòng)前刪除 flask-api 容器
  • -d:后臺(tái)運(yùn)行
  • -p 5000:5000 端口映射(主機(jī):容器)

5.測(cè)試

curl http://localhost:5000

二、常見(jiàn)問(wèn)題與解決方案

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

  2. 問(wèn)題:依賴安裝失敗(如 Alpine 鏡像缺少編譯工具)。
    解決:在 Dockerfile 中添加編譯依賴:

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

總結(jié) 

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

相關(guān)文章

最新評(píng)論