From bdf33b6a039bafc372cb8e2d6f744ec272e196e9 Mon Sep 17 00:00:00 2001
From: jaystone776 <1732865113@qq.com>
Date: Wed, 1 Sep 2021 12:29:06 +0800
Subject: [PATCH 1/2] Add Chinese Translation for docs\deployment\docker.md
as title
---
docs/zh/docs/deployment/docker.md | 181 ++++++++++++++++++++++++++++++
docs/zh/mkdocs.yml | 2 +
2 files changed, 183 insertions(+)
create mode 100644 docs/zh/docs/deployment/docker.md
diff --git a/docs/zh/docs/deployment/docker.md b/docs/zh/docs/deployment/docker.md
new file mode 100644
index 0000000000000..d2782075b324b
--- /dev/null
+++ b/docs/zh/docs/deployment/docker.md
@@ -0,0 +1,181 @@
+# 使用 Docker 部署
+
+本章的主要内容如下:
+
+* 创建最高性能的 **FastAPI** 应用 Docker 镜像/容器。**约 5 分钟**;
+* (可选)开发者需要了解的 HTTPS 知识;
+* 使用自动 HTTPS 设置 Docker Swarm 模式集群,同样适用于 5美元/月的简单服务器。**约 20 分钟**;
+* 使用 Docker Swarm 与 HTTPS 生成并部署完整的 **FastAPI** 应用。**约 10 分钟**。
+
+使用 **Docker** 部署应用具有安全、可复制、开发简单等优势。
+
+如果使用 Docker,推荐使用官方 Docker 镜像:
+
+## tiangolo/uvicorn-gunicorn-fastapi
+
+这个镜像内置了**自动调优**机制,只需添加代码,就能开发出高性能的应用,而且不用付出任何代价。
+
+您依然可以使用环境变量或配置文件更改配置。
+
+!!! tip "提示"
+
+ 要查看所有配置和选项,请参阅 Docker 镜像页面: tiangolo/uvicorn-gunicorn-fastapi。
+
+## 创建 `Dockerfile`
+
+* 进入项目文件夹
+* 创建包含以下内容的 `Dockerfile`:
+
+```Dockerfile
+FROM tiangolo/uvicorn-gunicorn-fastapi:python3.7
+
+COPY ./app /app
+```
+
+### 大型应用
+
+参照创建[多文件大型应用](../tutorial/bigger-applications.md){.internal-link target=_blank}一章,`Dockerfile` 的内容是类似这样的:
+
+```Dockerfile
+FROM tiangolo/uvicorn-gunicorn-fastapi:python3.7
+
+COPY ./app /app/app
+```
+
+### 树莓派与其它架构
+
+如果在(使用 ARM 处理器的)树莓派或其它任何架构中运行 Docker,要基于 Python 基础镜像(多架构)从头创建 `Dockerfile`,并单独使用 Uvicorn。
+
+本例中,`Dockerfile` 的内容如下:
+
+```Dockerfile
+FROM python:3.7
+
+RUN pip install fastapi uvicorn
+
+EXPOSE 80
+
+COPY ./app /app
+
+CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]
+```
+
+## 创建 **FastAPI** 代码
+
+* 创建 `app` 文件夹,并进入文件夹
+* 使用以下代码创建 `main.py`:
+
+```Python
+from typing import Optional
+
+from fastapi import FastAPI
+
+app = FastAPI()
+
+
+@app.get("/")
+def read_root():
+ return {"Hello": "World"}
+
+
+@app.get("/items/{item_id}")
+def read_item(item_id: int, q: Optional[str] = None):
+ return {"item_id": item_id, "q": q}
+```
+
+* 文件夹架构如下:
+
+```
+.
+├── app
+│ └── main.py
+└── Dockerfile
+```
+
+## 构建 Docker 镜像
+
+* 进入项目文件夹(`Dockerfile` 所在的文件夹,包含 `app` 文件夹)
+* 构建 FastAPI 镜像:
+
+
+
+```console
+$ docker build -t myimage .
+
+---> 100%
+```
+
+
+
+## 启动 Docker 容器
+
+* 运行基于镜像的容器:
+
+
+
+```console
+$ docker run -d --name mycontainer -p 80:80 myimage
+```
+
+
+
+这样,就在 Docker 容器中创建了一个优化过的 FastAPI 服务器。并对当前服务器(和 CPU 内核数)进行了自动调优。
+
+## 查看文档
+
+查看Docker容器的 URL,例如:http://192.168.99.100/items/5?q=somequery 或 http://127.0.0.1/items/5?q=somequery(或使用 Docker 主机)。
+
+返回的响应如下:
+
+```JSON
+{"item_id": 5, "q": "somequery"}
+```
+
+## API 文档
+
+现在跳转至 http://192.168.99.100/docs 或 http://127.0.0.1/docs(或使用 Docker 主机)。
+
+查看自动交互的(Swagger UI) API 文档。
+
+![Swagger UI](https://fastapi.tiangolo.com/img/index/index-01-swagger-ui-simple.png)
+
+## 备选 API 文档
+
+跳转至 http://192.168.99.100/redoc 或 http://127.0.0.1/redoc(或 Docker 主机)。
+
+查看(ReDoc)备选 API 文档:
+
+![ReDoc](https://fastapi.tiangolo.com/img/index/index-02-redoc-simple.png)
+
+## Traefik
+
+Traefik 是高性能反向代理/加载均衡器,用于执行 **TLS 终止代理**任务(其它功能除外)。
+
+它集成了 Let's Encrypt,可以处理所有 HTTPS 组件,包括获取与更新证书。
+
+Traefik 还集成了 Docker,可以在每个应用配置中声明域,用它读取配置,生成 HTTPS 证书,为应用自动提供 HTTPS 服务,而且无需在配置中进行任何更改。
+
+---
+
+有了这些信息与工具,就可以继续下一节组合所有内容。
+
+## 支持 Traefik 与 HTTPS 的 Docker Swarm mode 集群
+
+设置 Docker Swarm Mode 集群大约需要 20 分钟,还包括使用 Traefik 处理 HTTPS(包括证书获取与更新)。
+
+使用 Docker Swarm Mode 可以启用单机 “集群”(仅 5 美元/月 服务器),然后再按需添加更多服务器。
+
+使用 Traefik 与 HTTPS 设置 Docker Swarm Mode 集群,要遵循以下指南:
+
+用于 HTTPS 集群的 Docker Swarm Mode 与 Traefik
+
+### 部署 FastAPI 应用
+
+完成这些设置的最简单方式是使用 [**FastAPI** 项目生成器](../project-generation.md){.internal-link target=_blank}。
+
+项目生成器集成了 Docker Swarm 集群与 Traefik 与 HTTPS。
+
+生成项目只需要大约 2 分钟。
+
+生成的项目提供了部署说明,再用 2 分钟就可以完成部署。
+
diff --git a/docs/zh/mkdocs.yml b/docs/zh/mkdocs.yml
index d73afaa934a65..6e3982b0c5b34 100644
--- a/docs/zh/mkdocs.yml
+++ b/docs/zh/mkdocs.yml
@@ -102,6 +102,8 @@ nav:
- advanced/response-directly.md
- advanced/custom-response.md
- deployment.md
+- 部署:
+ - deployment/docker.md
- contributing.md
- help-fastapi.md
- benchmarks.md
From d816763a34e8a0447872af55b91844bcef2abb33 Mon Sep 17 00:00:00 2001
From: "pre-commit-ci[bot]"
<66853113+pre-commit-ci[bot]@users.noreply.github.com>
Date: Mon, 26 Jun 2023 18:14:10 +0000
Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=8E=A8=20[pre-commit.ci]=20Auto=20for?=
=?UTF-8?q?mat=20from=20pre-commit.com=20hooks?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/zh/docs/deployment/docker.md | 1 -
1 file changed, 1 deletion(-)
diff --git a/docs/zh/docs/deployment/docker.md b/docs/zh/docs/deployment/docker.md
index d2782075b324b..f83653886f7ed 100644
--- a/docs/zh/docs/deployment/docker.md
+++ b/docs/zh/docs/deployment/docker.md
@@ -178,4 +178,3 @@ Traefik 还集成了 Docker,可以在每个应用配置中声明域,用它
生成项目只需要大约 2 分钟。
生成的项目提供了部署说明,再用 2 分钟就可以完成部署。
-