通過docker部署發(fā)布python項目的實戰(zhàn)步驟
將Python項目通過Docker部署發(fā)布,可以實現(xiàn)環(huán)境一致性、快速遷移和高效運維。以下是實戰(zhàn)部署的完整步驟,結(jié)合最佳實踐整理而成:
一、項目準備
1.確保本地項目可運行
開發(fā)完成并本地測試通過(如 Flask/FastAPI 項目能正常訪問)。
項目結(jié)構(gòu)示例:
myproject/
├── app.py
├── requirements.txt
└── Dockerfile
2.生成依賴文件 requirements.txt
# 推薦使用 pipreqs(只導(dǎo)出項目實際依賴) pip install pipreqs pipreqs . --encoding=utf8 --force # 或使用 pip freeze(可能包含多余包) pip freeze > requirements.txt
二、編寫Dockerfile
在項目根目錄創(chuàng)建 Dockerfile,內(nèi)容如下(以 Flask 為例):
# 使用輕量級Python鏡像 FROM python:3.11-slim # 設(shè)置工作目錄 WORKDIR /app # 復(fù)制依賴文件 COPY requirements.txt . # 安裝依賴(使用國內(nèi)源加速) RUN pip install --no-cache-dir -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ # 復(fù)制項目代碼 COPY . . # 暴露應(yīng)用端口(與代碼中保持一致) EXPOSE 5000 # 啟動命令(推薦使用 gunicorn 生產(chǎn)部署) CMD ["gunicorn", "--bind", "0.0.0.0:5000", "app:app"]
說明:
- 使用
slim鏡像減少體積。 --no-cache-dir減少鏡像大小。- 可替換為
uvicorn(FastAPI)或其他啟動器。
三、構(gòu)建 Docker 鏡像
# 構(gòu)建鏡像,指定名稱和標簽 docker build -t my-python-app:v1.0 . # 查看鏡像是否生成 docker images | grep my-python-app
注意命令末尾的 . 表示上下文路徑。
四、運行容器
# 啟動容器,后臺運行,端口映射 docker run -d -p 5000:5000 --name myapp my-python-app:v1.0 # 若需掛載配置或日志目錄 # docker run -d -p 5000:5000 -v ./logs:/app/logs --name myapp my-python-app:v1.0 # 查看運行中的容器 docker ps
五、測試訪問
瀏覽器訪問:http://localhost:5000 或服務(wù)器IP地址。
查看日志:
docker logs myapp
六、優(yōu)化建議(進階)
1.使用 .dockerignore 文件
__pycache__ *.pyc .git .env .idea
避免不必要的文件被打包進鏡像。
2.多階段構(gòu)建(減小鏡像體積)
FROM python:3.11-slim as builder COPY requirements.txt . RUN pip install --user -r requirements.txt FROM python:3.11-slim COPY --from=builder /root/.local /root/.local COPY . . ENV PATH=/root/.local/bin:$PATH CMD ["gunicorn", "--bind", "0.0.0.0:5000", "app:app"]
3.使用 Docker Compose 管理多服務(wù)
創(chuàng)建 docker-compose.yml:
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: example
啟動:
docker compose up --build
七、常用命令速查
| 功能 | 命令 |
|---|---|
| 查看鏡像 | docker images |
| 查看容器 | docker ps / docker ps -a |
| 刪除鏡像 | docker rmi 鏡像ID |
| 刪除容器 | docker rm 容器ID |
| 查看日志 | docker logs 容器名 |
| 進入容器 | docker exec -it 容器名 /bin/bash |
總結(jié)
| 步驟 | 關(guān)鍵點 |
|---|---|
| 1. 準備項目 | 本地可運行 + 生成 requirements.txt |
| 2. 編寫 Dockerfile | 基礎(chǔ)鏡像 + 依賴安裝 + 啟動命令 |
| 3. 構(gòu)建鏡像 | docker build -t name:tag . |
| 4. 運行容器 | docker run -d -p host:container --name |
| 5. 測試驗證 | 訪問服務(wù) + 查看日志 |
通過以上步驟,即可完成一個標準 Python 項目的 Docker 容器化部署,適用于開發(fā)、測試、生產(chǎn)等各類環(huán)境。
到此這篇關(guān)于通過docker部署發(fā)布python項目的實戰(zhàn)步驟的文章就介紹到這了,更多相關(guān)docker部署發(fā)布python項目內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker-swarm之使用Docker secret管理敏感數(shù)據(jù)
就Docker Swarm集群服務(wù)而言,secret 是塊狀數(shù)據(jù),例如密碼、SSH私鑰、SSL證書或其他不應(yīng)通過網(wǎng)絡(luò)傳輸或未加密存儲在Dockerfile或應(yīng)用程序源代碼中的數(shù)據(jù),我們可以使用Docker secret 集中管理這些數(shù)據(jù),所以接下來就帶大家了解一下如何使用Docker secret 管理敏感數(shù)據(jù)2023-08-08

