dockerfile部署fastapi

Dockerfile部署fastapi

# 引入python版本
FROM python:3.9
# 设置时间
RUN ln -sf /usr/share/zoneinfo/Asia/Beijing/etc/localtime
# 输出时间
RUN echo 'Asia/Beijing' >/etc/timezone
# 复制该文件到工作目录中
COPY ./requirements.txt /code/requirements.txt
WORKDIR /Users/wayne/Moka/Auto/hcm_abs_fastapi/api
COPY ./ /code/
# 设置工作目录
WORKDIR /code
# 禁用缓存并批量安装包(后面的链接是利用豆瓣源安装,速度会加快)
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt -i https://pypi.douban.com/simple/
# 放开端口
EXPOSE 8081
# 命令行运行,启动uvicorn服务,指定ip和端口(--reload:让服务器在更新代码后重新启动。仅在开发时使用该选项。docker启动执行cmd命令)
#CMD ["uvicorn", "api_server:app", "--reload", "--host", "0.0.0.0", "--port", "8080"]
CMD ["gunicorn api_server:app --preload  -b 0.0.0.0:8090 -w 8 -k uvicorn.workers.UvicornWorker "]

2、构建docker镜像

# wayne_fastapi为镜像名称
docker build --no-cache -t wayne_fastapi .

容器挂载目录: (镜像可生成多个容器)

# /Users/wayne/Moka/Auto/hcm_abs_fastapi为本地目录  /code为docker目录(存储代码目录) 9090为本地访问端口,8080为docker启动端口(和dockerfile中设置一致,或者容器启动后你执行的命令行端口一致)
# -it -v /Users/wayne/Moka/Auto/hcm_abs_fastapi:/code   文件挂载
#-d --name hcm_wayne -p 9090:8080  wayne_fastapi  /bin/bash  端口影射
docker run -it -v /Users/wayne/Moka/Auto/hcm_abs_fastapi:/code  -d --name hcm_wayne -p 9090:8080  wayne_fastapi  /bin/bash 



docker run -it -v /Users/wayne/Moka/Auto/hcm_abs_fastapi:/code  -d --name hcm_amy -p 9080:8090  amy_fastapi  /bin/bash

3、运行容器:不进行容器挂载直接启动容器

# -d:后台运行
# 宿主机(9999)映射容器内的8888(上面Dockerfile已经暴露了8888端口)
docker run -d --name amy_fast -p 8093:8093 amy_fastapi

docker run -d --name hcm_abs_wayne -p 8095:8095 wayne_fastapi

4、进入容器

docker exec -it 243c32535da7 /bin/bash

5、查看日志

docker logs -f bf08b7f2cd89

当前容器进入没有启动。需要手动启动fastapi服务

gunicorn api_server:app --preload  -b 0.0.0.0:8080 -w 8 -k uvicorn.workers.UvicornWorker --log-level info --access-logfile
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux部署Python FastAPI程序通常涉及以下几个步骤: 1. **安装必要的软件**: - 首先,你需要确保已经安装了Python和pip(Python包管理器)。可以通过命令 `python --version` 和 `pip --version` 检查版本。 - 安装FastAPI和相关的依赖,如Uvicorn(web服务器)和Docker(如果打算使用容器化部署): ```bash pip install fastapi uvicorn[standard] ``` 2. **编写FastAPI应用**: 创建一个名为`app.py`的文件,写入FastAPI的基本结构,例如: ```python from fastapi import FastAPI app = FastAPI() async def hello_world(): return {"message": "Hello, World!"} app.get("/", hello_world) ``` 3. **运行应用**: 在终端中,你可以使用`uvicorn`启动FastAPI应用: ```bash uvicorn app:app --host 0.0.0.0 --port 8000 ``` 这将在本地主机的8000端口上运行应用。 4. **使用Flask或Gunicorn作为生产环境服务器**: 如果要部署到生产环境,推荐使用更稳定的Flask或Gunicorn,配合uwsgi、nginx等中间件。安装它们并配置合适的启动命令。 5. **容器化部署**: - 使用Dockerfile创建一个镜像,包含所有必要的依赖和应用代码: ```Dockerfile FROM python:3.9-slim-buster WORKDIR /app COPY requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"] ``` - 构建并推送到镜像仓库(如Docker Hub): ```bash docker build -t your-image-name . docker push your-image-name ``` 6. **设置负载均衡和监控**: - 可以使用Kubernetes、Nginx等服务来部署多个实例并进行负载均衡。 - 对生产环境进行监控,可以使用Prometheus和Grafana等工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值