通過(guò)docker部署發(fā)布python項(xiàng)目的實(shí)戰(zhàn)步驟
將Python項(xiàng)目通過(guò)Docker部署發(fā)布,可以實(shí)現(xiàn)環(huán)境一致性、快速遷移和高效運(yùn)維。以下是實(shí)戰(zhàn)部署的完整步驟,結(jié)合最佳實(shí)踐整理而成:
一、項(xiàng)目準(zhǔn)備
1.確保本地項(xiàng)目可運(yùn)行
開發(fā)完成并本地測(cè)試通過(guò)(如 Flask/FastAPI 項(xiàng)目能正常訪問(wèn))。
項(xiàng)目結(jié)構(gòu)示例:
myproject/
├── app.py
├── requirements.txt
└── Dockerfile
2.生成依賴文件 requirements.txt
# 推薦使用 pipreqs(只導(dǎo)出項(xiàng)目實(shí)際依賴) pip install pipreqs pipreqs . --encoding=utf8 --force # 或使用 pip freeze(可能包含多余包) pip freeze > requirements.txt
二、編寫Dockerfile
在項(xiàng)目根目錄創(chuàng)建 Dockerfile,內(nèi)容如下(以 Flask 為例):
# 使用輕量級(jí)Python鏡像 FROM python:3.11-slim # 設(shè)置工作目錄 WORKDIR /app # 復(fù)制依賴文件 COPY requirements.txt . # 安裝依賴(使用國(guó)內(nèi)源加速) RUN pip install --no-cache-dir -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ # 復(fù)制項(xiàng)目代碼 COPY . . # 暴露應(yīng)用端口(與代碼中保持一致) EXPOSE 5000 # 啟動(dòng)命令(推薦使用 gunicorn 生產(chǎn)部署) CMD ["gunicorn", "--bind", "0.0.0.0:5000", "app:app"]
說(shuō)明:
- 使用
slim鏡像減少體積。 --no-cache-dir減少鏡像大小。- 可替換為
uvicorn(FastAPI)或其他啟動(dòng)器。
三、構(gòu)建 Docker 鏡像
# 構(gòu)建鏡像,指定名稱和標(biāo)簽 docker build -t my-python-app:v1.0 . # 查看鏡像是否生成 docker images | grep my-python-app
注意命令末尾的 . 表示上下文路徑。
四、運(yùn)行容器
# 啟動(dòng)容器,后臺(tái)運(yùn)行,端口映射 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 # 查看運(yùn)行中的容器 docker ps
五、測(cè)試訪問(wèn)
瀏覽器訪問(wèn):http://localhost:5000 或服務(wù)器IP地址。
查看日志:
docker logs myapp
六、優(yōu)化建議(進(jìn)階)
1.使用 .dockerignore 文件
__pycache__ *.pyc .git .env .idea
避免不必要的文件被打包進(jìn)鏡像。
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
啟動(dòng):
docker compose up --build
七、常用命令速查
| 功能 | 命令 |
|---|---|
| 查看鏡像 | docker images |
| 查看容器 | docker ps / docker ps -a |
| 刪除鏡像 | docker rmi 鏡像ID |
| 刪除容器 | docker rm 容器ID |
| 查看日志 | docker logs 容器名 |
| 進(jìn)入容器 | docker exec -it 容器名 /bin/bash |
總結(jié)
| 步驟 | 關(guān)鍵點(diǎn) |
|---|---|
| 1. 準(zhǔn)備項(xiàng)目 | 本地可運(yùn)行 + 生成 requirements.txt |
| 2. 編寫 Dockerfile | 基礎(chǔ)鏡像 + 依賴安裝 + 啟動(dòng)命令 |
| 3. 構(gòu)建鏡像 | docker build -t name:tag . |
| 4. 運(yùn)行容器 | docker run -d -p host:container --name |
| 5. 測(cè)試驗(yàn)證 | 訪問(wèn)服務(wù) + 查看日志 |
通過(guò)以上步驟,即可完成一個(gè)標(biāo)準(zhǔn) Python 項(xiàng)目的 Docker 容器化部署,適用于開發(fā)、測(cè)試、生產(chǎn)等各類環(huán)境。
到此這篇關(guān)于通過(guò)docker部署發(fā)布python項(xiàng)目的實(shí)戰(zhàn)步驟的文章就介紹到這了,更多相關(guān)docker部署發(fā)布python項(xiàng)目?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker 命令自動(dòng)補(bǔ)全的實(shí)現(xiàn)
這篇文章主要介紹了Docker 命令自動(dòng)補(bǔ)全的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
docker部署rabbitmq集群的實(shí)現(xiàn)方法
這篇文章主要介紹了docker部署rabbitmq集群的實(shí)現(xiàn)方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
Docker在WSL環(huán)境下啟動(dòng)失敗的問(wèn)題解決辦法
在Windows系統(tǒng)上,有時(shí)候我們可能會(huì)遇到Docker啟動(dòng)失敗的問(wèn)題,特別是在使用WSL(Windows Subsystem for Linux)作為Docker運(yùn)行環(huán)境時(shí),這篇文章主要介紹了Docker在WSL環(huán)境下啟動(dòng)失敗問(wèn)題的解決辦法,需要的朋友可以參考下2025-07-07
Docker部署tenine實(shí)現(xiàn)后端應(yīng)用的高可用與負(fù)載均衡(推薦)
采用Docker部署Tengine和Keepalived,實(shí)現(xiàn)了一種適用于小型應(yīng)用場(chǎng)景的高可用負(fù)載均衡解決方案,本方案需要兩臺(tái)Ubuntu服務(wù)器、Docker軟件以及三個(gè)IP地址,適合需要簡(jiǎn)易而可靠的負(fù)載均衡和高可用性的小型應(yīng)用部署,感興趣的朋友跟隨小編一起看看吧2024-09-09
docker容器inspect內(nèi)容NetworkSettings的使用
文章主要介紹了Docker容器的網(wǎng)絡(luò)設(shè)置,包括默認(rèn)bridge網(wǎng)絡(luò)和多網(wǎng)絡(luò)連接的配置,詳細(xì)解釋了頂層字段(如Bridge、SandboxID、HairpinMode等)以及Networks對(duì)象的使用方法,推薦使用Networks對(duì)象來(lái)獲取容器的網(wǎng)絡(luò)信息,因?yàn)樗峁┝烁`活和全面的配置選項(xiàng)2026-02-02
從零搭建到生產(chǎn)環(huán)境配置詳解Docker部署MongoDB的完整流程
在容器化技術(shù)日益普及的今天,使用?Docker?部署?MongoDB?已經(jīng)成為開發(fā)和生產(chǎn)環(huán)境的標(biāo)配方案,本文詳細(xì)介紹了使用Docker部署MongoDB的全過(guò)程,希望可以帶大家全面掌握?Docker?部署?MongoDB?的核心技能2026-05-05
開源框架?Matrix-Dendrite?搭建聊天服務(wù)器的詳細(xì)過(guò)程
Matrix?是一個(gè)開源、可交互、去中心化的實(shí)時(shí)通信服務(wù)框架。使用?Matrix?可以搭建安全的通信服務(wù)器,配合支持?Matrix?的客戶端可以實(shí)現(xiàn)個(gè)人、團(tuán)隊(duì)間的實(shí)時(shí)聊天交互,對(duì)Matrix?Dendrite搭建聊天服務(wù)器的過(guò)程感興趣的朋友一起看看吧2022-03-03

