Docker初体验之MySQL+FastApi部署网页

不得不说Docker虽然非常方便,但是对于小白前几次使用来说还是有相当大的难度的,这次,我们包括镜像容器,一下都给大家说明白,并实际挂载一个FastApi开发的python接口项目。
首先不用多说,dockerdesktop可以在官网上轻松的下载,但是前提就是安装windows的wes2虚拟机,本文默认大家已经配置好所有的环境。
这里的后端,我选择了MySQL作为数据库,因为我对这个比较熟悉,大家也可以选择适合自己项目的数据库,dockerhub上基本上涵盖了目前市面上的大部分主流的数据库,这点大家不用担心。
下面我就开始说流程:


  1. 在项目中创建requirements.txt文件
    Docker初体验之MySQL+FastApi部署网页_第1张图片
    PS. 这里如果让pycharm自动生成requirements文件的话往往会不全,这里推荐大家网上搜一下创建需求文件的方法(如果在conda中写的不能直接使用普通指令生成,需要激活环境后生成,这点需要注意)

  1. 编写dockerfile文件
FROM python:3.10


ADD . /app

# 设置容器启动后的默认运行目录
WORKDIR /app


RUN pip install -r requirements.txt


CMD python3 -m uvicorn main:app --host '0.0.0.0' --port 8080 --reload

FROM后边写的是运行的基础环境,这里我们需要python3.10版本
RUN是在创建镜像的时候运行的指令,这里用pip安装需求
CMD是在实例化的时候运行的指令,这里用了启动fastapi的指令


  1. 使用docker build 生成镜像
docker build -t test:v1 .

解释一下,-t就是tag的缩写,这里我们指定镜像的名称为test,版本为v1,后边的 "."一定不要忘记,在build镜像的时候会自动帮我们使用pip下载需要的包


  1. 生成虚拟网络
    之所以需要虚拟网络,就是因为我们要把一个项目做成一个小的生态系统,这个项目为了与外界互不干扰,给其创建一套单独的网络系统
docker network create fast-api

命令浅显易懂,生成一个名字叫fast-api的虚拟网络


  1. 实例化MySQL镜像,并使镜像在虚拟网络中运行
docker run -d --name mysql --network fast-api -e MYSQL_ROOT_PASSWORD=root --network-alias mysql mysql:5.7.38

解释一下含义:
–name 为镜像实例化后的容器名字
– network 为指定的网络名称(这里我们指定之前创建的fast-api)
– network-alias 为网络别名,是为了方便以后后端连接数据库时用的,这里指定为mysql(输入mysql即为输入了mysql数据库所在的虚拟网络中的地址)
最后的一项为启动的镜像和其版本号(标签)
-e MYSQL_ROOT_PASSWORD 设定容器初始密码(这里我们设置为root)


  1. 如法炮制,把刚才创建好的后端镜像实例化
docker run -p 8080:8080 --name test -v D:/test:/app --network fast-api -d test:v1

-p 前面是外部端口后边是容器内部开放的端口,值得注意的是容器内部开放的端口一定要和上边我们写的dockerfile中的相符合要不然我们是无法在电脑上访问网站的
-name 后面是容器的名称
-v 后面是挂载的映射,反应了本机地址和容器中地址的对应关系
-network 后边跟的是指定的虚拟网络的名称
-d 跟的是镜像的名称(后端)


这些指令运行完后,我们访问本机的8080端口
(http://localhost:8080/docs/)
Docker初体验之MySQL+FastApi部署网页_第2张图片
可以成功进入到fastapi后台调试界面

你可能感兴趣的:(笔记,折腾,docker,docker,mysql,容器)