docker部署fastapi
使用 Docker 部署 FastAPI 应用程序可以提供更好的可移植性和隔离性。以下是使用 Docker 部署 FastAPI 应用程序的一般步骤:
- 创建 Dockerfile: 在项目的根目录下创建一个名为
Dockerfile
的文件,用于定义 Docker 镜像的构建过程。在Dockerfile
中,你需要指定基础镜像、复制应用程序代码、安装依赖项和设置运行命令等。
# 使用 Python 作为基础镜像 FROM python:3.11 # 设置工作目录 WORKDIR /app # 复制应用程序代码到容器中 COPY . /app RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone RUN sed -i 's#deb.debian.org#mirrors.aliyun.com#g' /etc/apt/sources.list # 安装依赖项 RUN apt-get update && apt-get install -y netcat RUN pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple # 暴露应用程序的端口 EXPOSE 8000 # 运行 FastAPI 应用程序 CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
- 构建 Docker 镜像: 在终端中导航到包含
Dockerfile
的项目目录,并执行以下命令来构建 Docker 镜像。
docker build -t my-fastapi-app .
这将根据 Dockerfile
中的定义构建一个名为 my-fastapi-app
的镜像。
我们也可以把本地镜像导出出来。
docker save -o ar-service.tar my-fastapi-app
然后我们在要去部署的机器执行
导入镜像
docker load -i ar-service.tar
删除镜像
docker rmi my-fastapi-app:v1 docker rmi --force my-fastapi-app:v1
- 运行 Docker 容器: 使用构建的镜像来运行一个 Docker 容器。
docker run -d -p 8000:8000 my-fastapi-app
这将在后台运行一个名为 my-fastapi-app
的容器,并将容器的端口 8000 映射到主机的端口 8000。
- 测试应用程序: 打开浏览器,并访问
http://localhost:8000/
,你应该能够看到 FastAPI 应用程序的响应。
这些步骤涵盖了基本的 Docker 部署流程。你可以根据需要进行更多的配置,例如将容器连接到其他服务、设置环境变量等。此外,还可以使用 Docker Compose 等工具来更方便地管理多个容器的部署。
对于docker build 时环境问题
root@jenkins-srv:/opt/pkg_prjs/ecpdeploy/backend# cat /etc/apt/sources.list ## 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 #deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse ## deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse #deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse ## deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse #deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse ## deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse #deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse ## deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse # 预发布软件源,不建议启用 # deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
FROM python:3.11 WORKDIR /opt/oa-service COPY . . EXPOSE 9902 RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone RUN cp /etc/apt/sources.list /etc/apt/sources.list.bak && \ sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list && \ apt update && apt install -y netcat vim RUN pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple #CMD ["python","main.py"] CMD ["uvicorn","main:app","--host","0.0.0.0","--port","9902"]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2019-12-27 python-两列表对应元素相加形成新列表 zip
2018-12-27 python之路day02--格式化输出、初始编码、运算符