.├── 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...