1、安装vmware workstation
安装VMware Workstation 16.1.2 Pro for Windows
ps:见参考
2、安装VMware Tools
安装VMware Tools
以支持虚拟机和主机之间复制、粘贴内容、拖拽文件
ps:见参考
3、安装Ubuntu
安装Ubuntu 22.04
ps:见参考
4、安装docker
安装docker
ps:见参考
5、配置docker 镜像源
编辑 sudo vim /etc/docker/daemon.json
写入:
{
"registry-mirrors": [
"https://ustc-edu-cn.mirror.aliyuncs.com/",
"https://ccr.ccs.tencentyun.com/",
"https://docker.m.daocloud.io/"
]
}
重启 docker sudo service docker restart
6、安装python环境(非必要)
Ubuntu20.04默认安装python3.10
- 查看版本:
python3 --version
安装pip:
sudo apt-get install python3-pip
sudo pip3 install --upgrade pip
7、创建fastapi项目
-
进入主目录,创建项目文件:
-
mkdir fastapi_project
-
cd fastapi_project
-
创建
main.py
,我用的vi
,或者在win
下写好复制过去。from fastapi import FastAPI
app = FastAPI()
@app.get("/") def read_root(): return {"Hello": "World"}
-
创建
requirements.txt
fastapi==0.111.0 uvicorn==0.29.0
8、编写dockerfile
# 使用官方的 Python 镜像作为基础镜像
FROM python:3.12
# 设置工作目录
WORKDIR /app
# 复制 requirements.txt 文件
COPY requirements.txt .
# 安装 Python 依赖并设置时区
RUN apt-get update && apt-get install -y tzdata \
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone \
&& pip install --upgrade pip \
&& pip install -r requirements.txt -i https://pypi.mirrors.ustc.edu.cn/simple \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# 复制项目的其余内容
COPY . /app
# 设置环境变量
ENV PYTHONUNBUFFERED=1
ENV PYTHONDONTWRITEBYTECODE=1
# 暴露应用程序运行的端口
EXPOSE 8000
# 启动 FastAPI 应用程序
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]
9、构建镜像
在项目的根目录下运行以下命令来构建 Docker 镜像:
docker build -t my_fastapi_app .
-t my_fastapi_app
是为镜像指定一个标签(my_fastapi_app
是镜像名称)。.
表示当前目录,Docker 将根据当前目录下的Dockerfile
构建镜像。
10、运行docker容器
构建成功后,运行以下命令启动容器:
docker run -d -p 8000:8000 my_fastapi_app
-d
:在后台运行容器(分离模式)。-p 8000:8000
:将主机的端口8000
映射到容器的端口8000
。my_fastapi_app
:这是之前构建的镜像名称。
11、 验证 FastAPI 应用是否运行
容器运行成功后,你可以打开浏览器并访问:
- 主页 :
http://localhost:8000
- 自动生成的交互式文档 (Swagger UI):
http://localhost:8000/docs
- ReDoc 文档 :
http://localhost:8000/redoc
你应该能够看到 FastAPI 应用程序的响应。
12、查看日志
查看容器日志,确保应用程序正确运行:
docker logs <container_id>
container_id
:容器ID
13、修改代码后的步骤
- 停止正在运行的容器:
docker stop <container_id>
- 修改你的 代码。
- 重新构建镜像(没测试,自己测试是否需要这一步)
- 运行新容器:
docker run -d -p 8000:8000 my_fastapi_app
14、查看虚拟机IP地址
- 安装
net-tools
:sudo apt install net-tools
- 查看IP:
ifconfig
虚拟机 IP 地址会显示在 eth0
、enp0s3
、ens33
或者 wlan0
接口下
15、从主机中访问
根据14
查到的IP访问即可。
http://ip:8000
16、用到的命令
-
构建 Docker 镜像 :
docker build -t image_name.
-t image_name
是为镜像指定一个标签(image_name
是镜像名称)。.
表示当前目录,Docker 将根据当前目录下的Dockerfile
构建镜像。
-
运行 Docker 容器 :
docker run -d -p 8000:8000 image_name
-d
:以守护进程的方式在后台运行容器(分离模式)。-p 8000:8000
:将主机的端口8000
映射到容器的端口8000
。image_name
:镜像名称。
- 查看运行中的docker进程:
docker ps
,可以从这里看到容器的ID - 查看所有docker进程:
docker ps -a
- 查看docker 镜像:
docker images
- 删除docker容器:
docker container rm container_id
- container_id:容器ID
- 删除docker镜像:
docker image rm image_id
- image_id:镜像ID
- 查看日志:
docker logs container_id
- container_id:容器ID
- 进入容器(base):
docker exec -it container_id /bin/bash
17、参考
- VMware Workstation Pro各版本下载(2024.5.5之后)
- Vmware虚拟机和主机之间复制、粘贴内容、拖拽文件的详细方法
- 在VMware16虚拟机安装Ubuntu详细教程
- 如何在 Ubuntu 22.04 LTS 中安装 Docker 和 Docker Compose
- docker镜像仓库地址
18、书籍推荐
我最先看的是《第一本docker书》,但我看了没几章,因为我觉得看得很费劲,可能我比较笨。
然后我换成了 《Docker技术入门与实战 第3版》
,用了大半天时间看完了第一部分,即1-8章。我觉得看起来很轻松,好理解,于是我就借助chatgpt
尝试用docker部署了一个简单的fastapi
服务。
评论列表,共 0 条评论
暂无评论