dockerfile部署fastapi

糜雪峰
2023-12-01

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
 类似资料: