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應用容器化 - 三只松鼠 - 博客園

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/280471.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/280471.shtml
英文地址,請注明出處:http://en.pswp.cn/news/280471.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PHP-FPM 與 Nginx 的通信機制總結

PHP-FPM 介紹 CGI 協議與 FastCGI 協議 每種動態語言&#xff08; PHP,Python 等&#xff09;的代碼文件需要通過對應的解析器才能被服務器識別&#xff0c;而 CGI 協議就是用來使解釋器與服務器可以互相通信。PHP 文件在服務器上的解析需要用到 PHP 解釋器&#xff0c;再加上對…

Android——監聽事件總結

各種監聽事件 1.按鈕 Button&#xff08;1&#xff09;點擊監聽btn_1.setOnClickListener(new View.OnClickListener() { &#xff08;2&#xff09;長按監聽btn_1.setOnLongClickListener(new View.OnLongClickListener() { 2.單選框 RadioGroupradio_gp.setOnCheckedChangeLi…

ChatGPT 大智近妖,從宇宙人生到手搓光刻機,從哄女朋友到寫年終總結我們聊得非常開心,反而讓人越來越憂心...

都說 ChatGPT 要干掉程序員&#xff0c;清理搜索引擎&#xff0c;取代Stack Overflow&#xff0c;還能消滅人類&#xff0c;這些有些言過其實了。ChatGPT 的定位是一個人工智能助理&#xff0c;它說&#xff0c;它的主要目的是通過回答用戶的問題&#xff0c;為用戶提供幫助。在…

如何在Windows Defender中安排掃描

Windows Defender automatically performs background scans during your PC’s idle moments, but doesn’t include an easy way to schedule a full scan. There is a way to do it, though. Windows Defender在PC空閑時自動執行后臺掃描&#xff0c;但是沒有包括安排完整掃…

復習深入筆記02:魔法方法/cookie,session,token/異常

魔法方法 對象生成 1.先調用__new__方法&#xff0c;生成空對象。控制對象生成。 2.當執行“對象類名&#xff08;namelqz&#xff09;”&#xff0c;觸發類的__init__()

比特熊故事匯獨家 | .NET 感恩專場

點擊上方藍字關注我們&#xff08;本文閱讀時間&#xff1a;15分鐘)大家好&#xff01;我是愛吃、愛玩、更愛學習技術&#xff0c;IT界新晉小紅人&#xff0c;開發者的好朋友——比特熊&#xff01;比特熊&#xff1a;本期故事匯是.NET專場&#xff0c;今天一次性邀請到DOTNET領…

Ubuntu Core 給物聯網提供更多安全支持

開發四年只會寫業務代碼&#xff0c;分布式高并發都不會還做程序員&#xff1f; Canonical 是 Ubuntu 的一個桌面環境&#xff0c;該公司目前在云服務業務賺到了錢。因為 Ubuntu Core 為嵌入式設備帶來了 Ubuntu 18.04 長期支持(LTS)代碼庫。Ubuntu Core 的鏡像大小為 260MB&…

semantic ui要裝什么才能使用

作者&#xff1a;呆呆笨笨鏈接&#xff1a;https://www.zhihu.com/question/32233356/answer/196799506來源&#xff1a;知乎著作權歸作者所有。商業轉載請聯系作者獲得授權&#xff0c;非商業轉載請注明出處。本答案將以兩種方式講解如何從零開始使用 Semantic-UI&#xff0c;…

用戶帳戶控制設置_創建快捷方式以避免用戶帳戶控制彈出式快捷方式

用戶帳戶控制設置There are numerous applications which, when launched, result in a UAC (User Account Control) warning being displayed. There are reasons why this security measure is a good idea, but it can also be extremely irritating. ElevatedShortcut lets…

Java Observer Pattern(觀察者模式)

當對象間存在一對多關系時&#xff0c;則使用觀察者模式&#xff08;Observer Pattern&#xff09;。比如&#xff0c;當一個對象被修改時&#xff0c;則會自動通知它的依賴對象。觀察者模式屬于行為型模式。 關鍵代碼&#xff1a;在抽象類里有一個 ArrayList 存放觀察者們。 優…

rest_framework01:前后端分離\規范\簡單例子(查詢某本書)

web 開發模式 RESTful規范 1 數據的安全保障 url鏈接一般都采用https協議進行傳輸 注&#xff1a;采用https協議&#xff0c;可以提高數據交互過程中的安全性 2 接口特征表現 用api關鍵字標識接口url&#xff1a; https://api.baidu.comhttps://www.baidu.com/api注&#xff…

.NET Core如何通過SSL訪問MongoDB?

【.NET Core】| 總結/Edison Zhou大家好&#xff0c;我是Edison。最近有一個ASP.NET Core通過SSL證書訪問MongoDB的需求&#xff0c;但是在網上發現資料很少&#xff0c;于是調查了一番&#xff0c;做了如下的筆記&#xff0c;希望對你有用。背景在實際場景中&#xff0c;開發環…

SQA

一、長大一條龍SQA計劃 SQA計劃需要包含軟件工程質量保證、質量控制、數據收集和統計報告這四方面內容&#xff0c;計劃以時間為線索&#xff0c;小組內成員為對象&#xff0c;以下為我組的工作計劃&#xff1a; 時間 任務 需完成的情況 2017年10月 用戶登錄注冊后臺實現 …

在pom.xml中配置nexus上傳地址

2019獨角獸企業重金招聘Python工程師標準>>> <distributionManagement> <repository> <id>thirdparty</id> <url>http://&#xff5b;nexusIP地址&#xff5d;:8081/nexus/content/repositories/thi…

網頁背景平鋪_在大約十秒鐘內為網頁創建無縫平鋪背景

網頁背景平鋪Creating a background image for your webpage (or desktop background) isn’t challenging at all. In fact, even a newbie Photoshop user can bash one out in about ten seconds. Here’s the simplest of simple methods with surprising, great results. …

9月11日學習內容整理:正則表達式,re模塊

一、正則表達式&#xff1a;正則是很大的一個知識點&#xff0c;不會僅僅是下面這些東西 1、概念&#xff1a;正則表達式就是一種對字符串匹配的規則&#xff0c;注意是只對字符串&#xff0c;正則表達式和python沒啥關系&#xff0c; 2、表達式&#xff1a; &#xff08;1&…

rest_framework02:修改數據/校驗鉤子/read_only和write_only

修改數據 1.傳入數據&#xff0c;選中data&#xff0c;以及修改data book_ser BookSerializer(instancebook, datarequest.data) 2.校驗&#xff0c;通過則保存。 if book_ser.is_valid(): # 返回True 表示驗證通過book_ser.save() # 不是book.save() rest_framework…

MongoDB的安裝與使用

MongoDB是一款NoSql數據庫。NoSql數據庫叫非關系型數據庫&#xff0c;NoSql的全名Not only sql。是為了解決高并發、高可用、高可擴展&#xff0c;以及大數據存儲等一系列問題而產生的數據庫解決方案。NoSql&#xff0c;它不能替代關系型數據庫&#xff0c;只能作為關系型數據庫…

linux 基準測試_如何對Linux系統進行基準測試:3個開源基準測試工具

linux 基準測試Linux’s command-line utilities can do anything, including perform benchmarks – but using a dedicated benchmarking program is a simpler and more foolproof process. These utilities allow you to perform reproducible tests across different syst…

.NET 7 新增的 IParsable 接口介紹

.NET 7 是一個新版本的 .NET&#xff0c;它新增了一個名為 IParsable 的接口。這個接口可以幫助開發人員更容易地在代碼中解析字符串。IParsable 接口包含兩個方法&#xff1a;Parse 和 TryParse。Parse 方法用于將一個字符串解析為指定類型的值。如果解析失敗&#xff0c;則會…