日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python FastApi:快速建立docker容器/挂载共享文件夹/导入导出

發布時間:2023/12/4 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python FastApi:快速建立docker容器/挂载共享文件夹/导入导出 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、目的

a.快速把原有fastapi代碼部署到docker,讓docker在server運行。

b.不涉及docker深入設置。

c.使用python第三方lib少或簡單。

二、步驟

ps:請提前安裝docker

1.新建Dockerfile,放入到項目根目錄

a.Dockerfile沒有后綴.

b.準備好requirements.txt 文件。(在虛擬環境

pip freeze > requirements.txt

c.有些lib是比較特別和在pycharm導入的不一樣需要手動修改,如opencv。

d.CaseTemplateMatch.py是fastapi實現功能文件

Dockerfile:

# 使用python環境運行fastapi py文件 FROM python:3.9# Set the working directory to /app #ENV PATH /usr/local/bin:$PATH WORKDIR /app# Copy the current directory contents into the container at /app ADD . /app# Install any needed packages specified in requirements.txt RUN pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simpleRUN pip3 install opencv-python-headless -i https://pypi.tuna.tsinghua.edu.cn/simple# Make port 80 available to the world outside this container EXPOSE 80# Define environment variable ENV NAME World# Run app.py when the container launches CMD ["python", "/app/CaseTemplateMatch.py"]

CaseTemplateMatch.py(部分)

import cv2 import numpy as np from fastapi import FastAPI, File, UploadFile, Form import uvicorn as uvicorn import os from starlette.responses import FileResponse from pathlib import Path import timeapp = FastAPI()@app.get("/copyFile/{fileName}") async def copyFile(fileName: str):"""用于下載運行需要的工具,user用不到。文件預先放在server:param fileName::return:"""downloadFile = './tool/' + fileNamemy_file = Path(downloadFile)if my_file.is_file():printtimelog("dowload file"+fileName)return FileResponse(downloadFile, filename=fileName)if __name__ == '__main__':uvicorn.run(app=app, host="0.0.0.0", port=8084)

2.構建docker鏡像

docker build -t imamgeName .

?使用命令查找image是否存在

docker images

3.運行容器

docker run -d -p 8085:80 --name pytname pyti2

運行命令查看容器狀態

docker ps -a

4.瀏覽器訪問fastapi

四、掛載共享windows文件夾

1.運行命令

a.windows路徑直接絕對路徑,docker內路徑也需要絕對路徑。

b.可以不需要參數 -it,不顯示交互信息

docker run -v C:\testFile:/app/img -d -p 8087:80 --name pyshare4 pyti2

PS:有時莫名其妙不能掛載。考慮增加參數--restart always --privileged=true

2.進入docker查看

docker exec -it pyshare4 /bin/bash

ps:有時遇到進入后卡住的問題

參考:docker run -it 和 docker exec -it_wdadas的博客-CSDN博客

五、遇到問題與總結

a.當需要安裝python lib比較特別時,就需要很耗時查找,就不快速了。

b.可擴展性不高。

六、導入導出鏡像

鏡像image:save--load

docker save id(name)> /opt/docker/savesso.tardocker load < /opt/docker/savesso.tar

容器:export --import

要一一對應,否則報錯:

docker: Error response from daemon: No command specified.

參考:Docker 導入導出鏡像_bear_依舊。的博客-CSDN博客

參考:Docker實踐:python應用容器化 - 三只松鼠 - 博客園

總結

以上是生活随笔為你收集整理的Python FastApi:快速建立docker容器/挂载共享文件夹/导入导出的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。