赞
踩
|--mysite # 根目录
|----docker-compose.yml # 用于部署上线
|----Dockerfile # 用于打包镜像
|----server.py # 测试服务
from fastapi import FastAPI
# 创建服务对象
app = FastAPI()
# get --------------------------------
@app.get("/")
async def hello():
return "hello docker-compose"
# ------------------------------------
if __name__ == '__main__':
import uvicorn
uvicorn.run(app="server:app", host="0.0.0.0", port=2333, reload=True)
ps:一个fastapi服务,访问 ip:2333 会返回 “hello docker-compose”
FROM python:3.7
MAINTAINER ps
WORKDIR /mysite
ADD . /mysite
EXPOSE 2333
# 配置时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN pip config set global.index-url https://pypi.douban.com/simple/
# RUN pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
RUN python -m pip install -U pip
# RUN pip install -r ./requirements.txt
RUN pip install uvicorn fastapi
CMD python server.py
ps:
version: '3.5'
services:
mysite:
image: mysite_image:0.0.1
container_name: mysite_container
build: ./
restart: always
ports:
- "2333:2333"
# volumes:
# - /opt/data:/var/lib/mysql
ps:
version: ‘3.5’ :指定当前的 compose 版本【compose 版本可以通过 docker-compose --version 命令查看】
services :指定部署哪些服务
mysite :如果不指定下面的 image 参数的话,打包后的镜像名会以 当前文件夹名+下划线+你配置的名称 组合,作为你的镜像名【比如:此处我如果没指定下面的 image 参数的话,我的镜像名就是 文件夹名+下划线+配置名 == mysite_mysite】如果指定了 image 参数的话,那么这里的名字可以随便写,相当于站位符,没啥用了
ps:但是有一点必须注意,如果一个宿主机存在多个 docker-compose.yml 文件,那么此处的项目名 mysite 不能重复,否则运行 docker-compose up 后,其他同名的容器会被挤掉并直接删除
image: mysite_image:0.0.1 :指定镜像名为 mysite_image 版本号为 0.0.1
container_name: mysite-container :指定启动后的容器名为 mysite-container
build ./ :在当前路径下找 Dockerfile 文件
restart: always :开机自启
ports :端口映射,“宿主机端口:容器端口”
volumes:目录挂载,“宿主机目录:容器目录” 容器目录必须存在
docker-compose up -d
ps:
访问 ip:2333
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。