文章目录
- 一、前置条件
- 二、使用方法
- 1.目录结构
- 2.创建测试服务【server.py】
- 3.创建 docker 打包文件【Dockerfile】
- 4.创建 compose 部署文件【docker-compose.yml】
- 5.启动容器
- 6.查看容器
- 三、测试
一、前置条件
- 安装 docker-compose ,可以参考这篇文章 https://blog.csdn.net/weixin_43721000/article/details/125425947
二、使用方法
1.目录结构
|--mysite # 根目录|----docker-compose.yml # 用于部署上线 |----Dockerfile # 用于打包镜像|----server.py # 测试服务
2.创建测试服务【server.py】
from fastapi import FastAPI# 创建服务对象
app = FastAPI()# get --------------------------------
@app.get("/")
async def hello():return "hello docker-compose"
# ------------------------------------if __name__ == '__main__':import uvicornuvicorn.run(app="server:app", host="0.0.0.0", port=2333, reload=True)
ps:一个fastapi服务,访问 ip:2333 会返回 “hello docker-compose”
3.创建 docker 打包文件【Dockerfile】
FROM python:3.7MAINTAINER psWORKDIR /mysiteADD . /mysiteEXPOSE 2333RUN python -m pip install -U pip
RUN pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
RUN pip install uvicorn fastapiCMD python server.py
ps:
- FROM :基础镜像
- MAINTAINER :指明作者
- WORKDIR /mysite :指明工作目录为容器中的 /mysite 目录
- ADD . /mysite :当前路径所有文件复制到容器的 /mysite 目录下
- EXPOSE 2333 :指明容器中暴露的端口为 2333【此处可省,后面在docker-compose.yml配置了】
- RUN :run的三行分别是更新pip、换源、安装 fastapi 依赖包
- CMD :服务启动命令
4.创建 compose 部署文件【docker-compose.yml】
version: '3.5'services:mysite:image: mysite_image:0.0.1container_name: mysite_containerbuild: ./restart: alwaysports:- "2333:2333"
ps:
- version: ‘3.5’ :指定当前的 compose 版本【compose 版本可以通过 docker-compose --version 命令查看】
- services :指定部署哪些服务
- mysite :如果不指定下面的 image 参数的话,打包后的镜像名会以 当前文件夹名+下划线+你配置的名称 组合,作为你的镜像名【比如:此处我如果没指定下面的 image 参数的话,我的镜像名就是 mysite_mysite】如果指定了 image 参数的话,那么这里的名字可以随便写,相当于站位符,没啥用了
- image: mysite_image:0.0.1 :指定镜像名为 mysite_image 版本号为 0.0.1
- container_name: mysite-container :指定启动后的容器名为 mysite-container
- build ./ :在当前路径下找 Dockerfile 文件
- restart: always :开机自启
- ports :端口映射
5.启动容器
docker-compose up -d
ps:
- -d :后台运行
- 首次执行时会先打包镜像,在从该镜像启动容器,后续运行则会直接从已存在的镜像启动
6.查看容器
- 此时查看容器状态的命令需要改为 docker-compose ps 而不是 docker ps 了【 docker-compose 部署的容器都用 docker-compose ps 查看,docker 部署的容器都用 docker ps 查看】
- 不过删除容器等其他操作还是用 docker 开头
三、测试
访问 ip:2333
