docker部署fastapi
1.撰写Dockerfile
FROM python:3.6
COPY . /app
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
WORKDIR ./app
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
EXPOSE 9400
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "9400"]
注意:Dockerfile需要修改部分就是你使用的python版本和你的端口号,本文端口号使用的是9400,可以改成你自己的端口号
2.生成requirments.txt文件
本文使用的库版本如下所示
anyio==3.3.2
asgiref==3.4.0
async-generator==1.10
certifi==2021.5.30
click==7.1.2
contextlib2==21.6.0
contextvars==2.1
dataclasses==0.8
fastapi==0.70.1
h11==0.13.0
idna==3.4
pydantic==1.8.2
sniffio==1.2.0
starlette==0.16.0
typing-extensions==4.1.1
uvicorn==0.15.0
wincertstore==0.2
3.项目结构
本文的项目结构如下图左侧所示
4.上传文件到部署服务器
项目结构还是和pycharm保持一致
5.打包镜像并运行
5.1打包镜像
docker build -t ydsy .
注意:打包的时候需要在项目文件目录下,也就是有Dockerfile目录下
打包成功如下所示,本文打包成的镜像ID为3afd31fab5f9
5.2运行镜像
命令如下
docker run -d --name 新取的容器名称 -p 8000:80 刚刚构建的镜像名称
本文使用的命令
docker run -d --name ydsyContainer -p 9403:9400 3afd31fab5f9
运行成功如下:
查看容器运行命令:
docker ps
下图可以看到我们刚刚运行的容器:
下图是使用postman测试结果