FastAPI 部署在Docker的詳細過程

2022-09-21 04:51:09 字數 2794 閱讀 4932

.├── app

│ ├── __init__.py

│ └── main.py

├── dockerfile

└── requirements.txt

fastapi 應用程式 main.py **

from typing import optional

from fastapi import fastapi

app = fastapi()

@app.get("/")

def read_root():

return

@app.get("/items/")

def read_item(item_id: int, q: optional[str] = none):

return

dockerfile

# 1、從官方 python 基礎映象開始

from python:3.9

# 2、將當前工作目錄設定為 /code

# 這是放置 requirements.txt 檔案和應用程式目錄的地方

workdir /code

# 3、先複製 requirements.txt 檔案

# 由於這個檔案不經常更改,docker 會檢測它並在這一步使用快取,也為下一步啟用快取

copy ./requirements.txt /code/requirements.txt

# 4、執行 pip 命令安裝依賴項

run pip install --no-cache-dir --upgrade -r /code/requirements.txt

# 5、複製 fastapi 專案**

copy ./app /code/app

# 6、執行服務

cmd ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]

第四步:執行 pip 命令解析

run pip install --no-cache-dir --upgrade -r /code/requirements.txt

這裡有乙個重要的技巧dockerfile,首先只複製依賴項的檔案,而不是 fastapi 應用程式**

./requirements.txt /code/requirements.txt

run pip install --no-cache-dir --upgrade -r /code/requirements.txt

./app /code/app

在 dockerfile 開啟命令列

docker build -t myimage .

檢視映象

docker images

啟動 docker 容器

docker run -d --name mycontainer -p 80:80 myimage

檢視容器

docker ps

訪問 127.0.0.1/

訪問 127.0.0.1/docs

帶有 gunicorn 的官方 docker 映象 - uvicorn

官方栗子

from tiangolo/uvicorn-gunicorn-fastapi:python3.9

copy ./requirements.txt /app/requirements.txt

run pip install --no-cache-dir --upgrade -r /app/requirements.txt

copy ./app /app

使用 poetry 的 docker image

# 第一階段:將僅用於安裝 poetry 並從 poetry 的 pyproject.toml 檔案生成帶有專案依賴項的 requirements.txt。

from tiangolo/uvicorn-gunicorn:python3.9 as requirements-stage

# 將 /tmp 設定為當前工作目錄;這是我們將生成檔案requirements.txt的地方

workdir /tmp

# 安裝 poetry

run pip install poetry

# 複製

copy ./pyproject.toml ./poetry.lock* /tmp/

# 生成 requirements.txt

run poetry export -f requirements.txt --output requirements.txt --without-hashes

# 這是最後階段,在這往後的任何內容都將保留在最終容器映像中

from python:3.9

# 將當前工作目錄設定為 /code

workdir /code

# 複製 requirements.txt;這個檔案只存在於前乙個 docker 階段,這就是使用 www.cppcns.com--from-requirements-stage 複製它的原因

copy --from=requirements-stage /tmp/requirements.txt /code/requirements.txt

# 執行命令

run pip install --no-cache-dir --upgrade -r /code/requirements.txt

# 複製

copy ./app /code/app

# 執行服務

cmd ["uvicorn", "app.1_快速入門:app", "--host", "0.0.0.0", "--port", "80"]

poetry 詳細教程

ht

Docke部署nginx並配置nginx

docker pull nginx 二 在宿主機中建立掛在目錄 mkdir p data nginx 三 在掛在目錄下新建配置檔案 四 將nginx容器對映在宿主機80埠 docker run name my nginx d p 80 80 v data nginx conf nginx.conf ...

centos如何安裝部署19版docker

它為實現用於儲存資源管理的塊裝置驅動提供了乙個高度模組化的核心架構 yum config manager add repoyum install y docker ce systemctl stop firewalld setenforce 0 vim etc selinux config seli...

在CentOS7 7上安裝最新版Docker

在centos7.7上安裝最新版docker 參照docker官方文件安裝 啟動docker systemctl start docker 設定docker開機啟動 systemctl enable docker 檢視docker狀態 systemctl status docker 設定docker...