前言
fastapi html的docker 部署
https://blog.csdn.net/weixin_33028765/article/details/112150517
一、fastapi的docker部署
1.生成包
第一步生成项目所需要安装的包,
pycahrm终端运行:
pip freeze > requirements.txt
一般而言这种方式会多很多
pytz @ file:///tmp/build/80754af9/pytz_1612215392582/work
这种形式的包,所以运行
pip list --format=freeze > requirements.txt
然后删除一些项目中没有用到的包,尽可能让要安装的包少一点。
2.将文件放入形式如下
requirements.tex 放入app目录下 和main同级
3.编写dockerfile文件
和app同级新建一个Dockerfile(其实就是pycharm中的file)写入以下信息
FROM python:3.7
COPY app/requirements.txt /app/requirements.txt
RUN pip3 install -r /app/requirements.txt -i https://pypi.doubanio.com/simple/
COPY ./app /app
EXPOSE 80
CMD ["uvicorn","app.main:app","--host","0.0.0.0","--port","80"]
第一 python:3.7 这个是 docker 生成镜像的版本,(使用到fastapi的依赖(Depends),python版本需要3.7以上)
第二 COPY app/requirements.txt /app/requirements.txt 其实就是将app目录下的requirements.txt 赋值到 docker镜像的目录app下(docker本身有个app目录)。
第三 RUN pip3 install -r /app/requirements.txt -i https://pypi.doubanio.com/simple/ 安装依赖包,这里的 /app/requirements.txt 指的是docker镜像的目录,而不是本地的目录
第四 COPY ./app /app 使用./app 因为dockerfile文件和app文件同级,所以./app 将app的全部文件复制到docker镜像的app中
第四 EXPOSE 80 开放80端口
第五 CMD [“uvicorn”,“app.main:app”,“–host”,“0.0.0.0”,“–port”,“80”] 这个是运行代码的关键一步,app.main:app 指的是在docker镜像上fastapi主应用的位置,
在pycharm终端运行:
docker build -t app . #创建镜像,app是镜像名,自己定义(如果是同一个程序,最好镜像名一样,因为docker每次创建不同名镜像的时候都会安装requirements文件),终端路径要对(上面的emotion路径下)
docker run -d --name emothion -p 8000:80 app #运行镜像,并生成容器,-d后台,emothion 容器名也是自定义,-p 8000:80 端口映射将8000映射到80(相当于我使用8000的端口可以访问到80端口的镜像), app指的是镜像名
二、html docker部署
1.文件目录
2.dockfile文件的写入
在static中常见Dockerfile文件,写入
FROM nginx:1.15.2-alpine
COPY . /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
然后终端进入到static目录下
docker build -t html_test.
docker run -d --name html-p 80:80 html_test
运行完成之后,在浏览器输入:
localhost/home.html 就可以进入