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