【第五節】部署http接口到ubuntu server上的docker內

描述清楚需求,讓deepseek幫我們寫一個demo,文件結構如下

FLASK_API_001
├── app.py
└── Dockerfile
└── requirements.txt

app.py

from flask import Flask, jsonify, requestapp = Flask(__name__)# 根路由
@app.route('/')
def home():return "Welcome to Flask API!"# GET請求示例
@app.route('/api/hello', methods=['GET'])
def hello():return jsonify({"message": "Hello, World!"})# POST請求示例
@app.route('/api/echo', methods=['POST'])
def echo():data = request.get_json()return jsonify({"received_data": data}), 201# 帶參數的路由
@app.route('/api/user/<username>', methods=['GET'])
def show_user_profile(username):return jsonify({"username": username})if __name__ == '__main__':app.run(host='0.0.0.0', port=5000, debug=True)

Dockerfile,這個一串x代替的字符是我的id,這里不能放出來

# 使用官方Python鏡像作為基礎鏡像
FROM xxxxxx.xuanyuan.run/python:3.9-slim# 設置工作目錄
WORKDIR /app# 復制依賴文件
COPY requirements.txt .# 安裝依賴
RUN pip install --no-cache-dir -r requirements.txt# 復制應用代碼
COPY . .# 暴露端口(Flask默認端口)
EXPOSE 5000# 定義啟動命令
CMD ["python", "app.py"]

依賴文件requirements.txt

flask==3.0.0

上傳該文件夾到ubuntu server,通過截圖看到上傳失敗,復制輸出到deepseek,deepseek回答是因為權限的問題

在這里插入圖片描述

使用ls -ld命令查看文件夾權限,可以看到歸屬權是root

zxd@server001:/home$ ls -ld
drwxr-xr-x 3 root root 4096 Jul  9 16:58 .

修改目錄歸屬權,再次ls -ld的時候已經變成當前用戶了

zxd@server001:~$ sudo chown -R zxd:zxd /home/zxd/NewFiler/
[sudo] password for zxd: 
zxd@server001:~$ ls -ld /home/zxd/NewFiler/
drwxr-xr-x 2 zxd zxd 4096 Jul 10 09:02 /home/zxd/NewFiler/
zxd@server001:~$ 

再次上傳文件,可以看到文件已經在了

在這里插入圖片描述

build鏡像

docker build -t flask-api-001 .

運行容器,內外端口映射都是5000

docker run -d -p 5000:5000 --name flask-api-001 flask-api-001

至此我們已經成功將api部署到docker內了,現在我們去瀏覽器里請求看下返回結果

我們請求了helloworld接口,可以看到,返回的內容是正確的,我上文代碼里寫的一樣的

在這里插入圖片描述

寫在最后,如果你沒有解決上一節docker倉庫的問題,那么這一節應該是進行不下去的,因為dockerfile里依然有拉取鏡像的動作

下一節 我們安裝一些工具簡化項目的部署,像現在這樣利用ftp 上傳,手動敲命令構建可以幫助理解背后的原理,但這太低效了。

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

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

相關文章

在 IntelliJ IDEA 中添加框架支持的解決方案(沒有出現Add Framework Support)

在 IntelliJ IDEA 中添加框架支持的解決方案 問題背景 版本變化&#xff1a;在 IntelliJ IDEA 2023.2 及更高版本中&#xff0c;項目右鍵菜單中的 “Add Framework Support” 選項已被移除。 常見需求&#xff1a;為 Java 項目添加框架支持&#xff08;如 Maven、Spring 等&am…

北京-4年功能測試2年空窗-報培訓班學測開-第五十天

咦&#xff0c;昨天路上寫一半就到家了&#xff0c;后來想早點睡就忘了還要發了&#xff0c;現在趕緊補上昨天是最后一節課(我們將一整天的課稱為一節&#xff09;&#xff0c;這就結課了昨天講了簡歷編寫&#xff0c;面試要準備的內容&#xff0c;還有redis和docker也沒有什么…

華為鴻蒙HarmonyOpenEye項目:開眼App的鴻蒙實現之旅

華為鴻蒙HarmonyOpenEye項目&#xff1a;開眼App的鴻蒙實現之旅 引言 在當今移動應用開發的浪潮中&#xff0c;鴻蒙系統憑借其獨特的分布式能力和高效的開發框架&#xff0c;吸引了眾多開發者的目光。今天要給大家介紹的是一個基于華為鴻蒙系統開發的開眼App項目——HarmonyO…

代碼隨想錄day36dp4

文章目錄1049.最后一塊石頭的重量II494.目標和474.一和零1049.最后一塊石頭的重量II 題目鏈接 文章講解 class Solution { public:int lastStoneWeightII(vector<int>& stones) {// 1. 確定 DP 數組及下標的含義&#xff1a;// dp[i][j] 表示考慮前 i 塊石頭&#…

Python 爬蟲實戰指南:按關鍵字搜索商品

在電商領域&#xff0c;按關鍵字搜索商品并獲取其詳情信息是一項常見的需求。無論是進行市場調研、競品分析還是用戶體驗優化&#xff0c;能夠快速準確地獲取商品信息都至關重要。1688 作為國內領先的 B2B 電商平臺&#xff0c;提供了豐富的商品資源。本文將詳細介紹如何使用 P…

【源力覺醒 創作者計劃】百度AI的開放新篇章:文心4.5本地化部署指南與未來生態戰略展望

百度AI的開放新篇章&#xff1a;文心4.5本地化部署指南與未來生態戰略展望 一起來玩轉文心大模型吧&#x1f449;文心大模型免費下載地址&#xff1a;https://ai.gitcode.com/theme/1939325484087291906 &#x1f31f; 嗨&#xff0c;我是IRpickstars&#xff01; &#x1f30…

測試工作中的質量門禁管理

一、前言 測試階段的質量門禁設計要考慮幾個維度,首先是研發流程的階段劃分,每個階段都要有明確的準入準出標準;其次要考慮不同測試類型的特點,比如功能測試和性能測試的驗收標準肯定不同;最后還要平衡質量要求和項目進度。 在單元測試階段,可以設置通過率和覆蓋率的閾值…

線上分享:解碼eVTOL安全基因,構建安全飛行生態

隨著城市空中交通&#xff08;UAM&#xff09;快速發展&#xff0c;電動垂直起降飛行器&#xff08;eVTOL&#xff09;面臨嚴格的安全與可靠性要求&#xff0c;需滿足全球適航標準及全生命周期分析。安全與可靠的飛行系統成為行業關注的焦點。在此背景下&#xff0c;本期線上分…

C回調函數基礎用法

&#x1f4cc; 定義&#xff1a;回調函數是通過函數指針傳遞給另一個函數的函數&#xff0c;這個被傳進去的函數將在某個時刻被“回調”調用。換句話說&#xff1a;你定義一個函數 A把函數 A 的地址&#xff08;即函數指針&#xff09;作為參數傳給函數 B函數 B 在合適的時機調…

手撕設計模式之消息推送系統——橋接模式

手撕設計模式之消息推送系統——橋接模式 1.業務需求 ? 大家好&#xff0c;我是菠菜啊&#xff0c;好久不見&#xff0c;今天給大家帶來的是——橋接模式。老規矩&#xff0c;在介紹這期內容前&#xff0c;我們先來看看這樣的需求&#xff1a;我們現在要做一個消息推送系統&…

Java 大廠面試題 -- JVM 垃圾回收機制大揭秘:從原理到實戰的全維度優化

最近佳作推薦&#xff1a; Java 大廠面試題 – JVM 面試題全解析&#xff1a;橫掃大廠面試&#xff08;New&#xff09; Java 大廠面試題 – 從菜鳥到大神&#xff1a;JVM 實戰技巧讓你收獲滿滿&#xff08;New&#xff09; Java 大廠面試題 – JVM 與云原生的完美融合&#xf…

圖機器學習(9)——圖正則化算法

圖機器學習&#xff08;9&#xff09;——圖正則化算法1. 圖正則化方法2. 流形正則化與半監督嵌入3. 神經圖學習4. Planetoid1. 圖正則化方法 淺層嵌入方法已經證明&#xff0c;通過編碼數據點間的拓撲關系可以構建更魯棒的分類器來處理半監督任務。本質上&#xff0c;網絡信息…

視頻動態范圍技術演進:從SDR到HDR的影像革命

一、動態范圍技術基礎認知 1.1 人眼視覺特性與動態范圍 人眼的動態感知范圍可達106:1&#xff08;0.0001-105 cd/m&#xff09;&#xff0c;遠超傳統顯示設備能力。視網膜通過虹膜調節&#xff08;物理孔徑&#xff09;與光化學反應&#xff08;光敏蛋白分解&#xff09;實現16…

基于LAMP環境的校園論壇項目

1.配置本地倉庫a.修改主機名為自己姓名全拼[rootserver ~]# hostnamectl set-hostname jun [rootserver ~]# bash [rootjun ~]# 運行結果圖如下圖所示&#xff1a;b.光盤掛載到/mnt目錄下[rootjun yum.repos.d]# mount /dev/sr0 /mnt mount: /mnt: WARNING: source write-prote…

在物聯網系統中時序數據庫和關系型數據庫如何使用?

在物聯網系統中&#xff0c;時序數據庫&#xff08;TSDB&#xff09;和關系型數據庫&#xff08;RDBMS&#xff09;的存儲順序設計需要根據數據特性、業務需求和系統架構綜合考慮。以下是典型的設計方案和邏輯順序&#xff1a;1. 常見存儲順序方案 方案一&#xff1a;先寫時序數…

django安裝、跨域、緩存、令牌、路由、中間件等配置

注意&#xff1a;如果是使用 PyCharm 編程工具就不用創建虛擬化&#xff0c;直接打開 PyCharm 選擇新建的目錄直接調過下面的步驟11. 項目初始化如果不是用 PyCharm 編輯器就需要手動創建虛擬環境在項目目錄cmd&#xff0c;自定義名稱的虛擬環境# 激活虛擬環境 python -m venv …

時間的弧線,邏輯的航道——標準單元延遲(cell delay)的根與源

時序弧 在這篇文章中&#xff0c;我們將討論影響標準單元延遲的因素。在開始討論之前&#xff0c;我們需要先了解一下什么是時序弧 (Timing Arcs)&#xff1a; 時序弧 (Timing Arcs)&#xff1a; 時序弧代表了信號從一個輸入流向一個輸出的方向。它存在于組合邏輯和時序邏輯中&…

《透視定軸:CSS 3D魔方中視覺層級的秩序法則》

當CSS的代碼編織出一個能自由旋轉的3D魔方&#xff0c;六個色彩各異的面在空間中翻轉、重疊時&#xff0c;最考驗技術的并非旋轉動畫的流暢度&#xff0c;而是每個面在任意角度下都能保持符合現實邏輯的前后關系。為何有時某個面會突兀地“穿透”另一個面&#xff1f;為何旋轉到…

RTL編程中常用的幾種語言對比

以下是RTL&#xff08;寄存器傳輸級&#xff09;編程中常用的幾種硬件描述語言&#xff08;HDL&#xff09;及其核心差異的對比分析。RTL編程主要用于數字電路設計&#xff0c;通過描述寄存器間的數據傳輸和邏輯操作實現硬件功能。以下內容綜合了行業主流語言的技術特性與應用場…

前端面試題(HTML、CSS、JavaScript)

目錄 一、HTML src與href區別 對html語義化理解 語義化標簽有哪些&#xff1f; script中的defer與async區別 行內元素與塊級元素有哪些&#xff1f; canvas與svg區別 SEO優化 html5新特性 二、CSS 盒模型 選擇器優先級 偽元素與偽類 隱藏元素幾種方式 水平/垂直…