Docker-compose部署Python应用

 

目录结构

/app  # python应用文件夹
  api.py  # API入口脚本文件
/docker  # docker文件夹
  docker-compose.yml  # docker compose脚本文件
  requirements.txt  # python第三方依赖
  run.sh  # 容器启动执行脚本文件

api.py

from flask import Flask, request

# 创建一个服务,赋值给APP
app = Flask(__name__)


# 指定接口访问的路径,支持什么请求方式get,post
@app.route('/HelloWorld', methods=['post', 'get'])
# 请求后直接拼接入参方式
def get_ss():
    # 使用request.args.get方式获取拼接的入参数据
    name = request.args.get('name')

    # 输出结果
    return 'Hello World! ' + name


app.run(host='0.0.0.0', port=8880, debug=True)
# 这个host:windows就一个网卡,可以不写,而liux有多个网卡,写成'0.0.0.0'可以接受任意网卡信息

docker-compose.yml

version: "3"  # docker-compose版本
services:
  docker-python-demo:  # docker-compose编排名称,一般同微服务名称,注意不要与其他服务重名
    image: "python:3.7.0b4"  # docker镜像名及版本
    hostname: docker-python-demo  # docker容器主机名
    container_name: docker-python-demo  # docker容器名
    volumes:  # 挂载目录
      - ../app:/app  # 项目相关
      - ../docker:/docker  # docker相关
    ports:  # 端口映射
      - "8880:8880"
    environment:  # 配置环境变量
      - TZ=Asia/Shanghai  # 设置时区
    command: bash /docker/run.sh  # 设置启动命令
    network_mode: bridge  # 网络模式:host、bridge、none等,一般bridge
    restart: unless-stopped  # 自动启动:unless-stopped、always等,unless-stopped为非正常停止则自动启动
#    external_links: # 外链其他服务,此处名称为docker-compose编排名
#      - mongodb

requirements.txt

flask
requests

run.sh

#!/bin/bash

# 使用阿里云源安装必须组件
pip install -i https://mirrors.aliyun.com/pypi/simple/ -r /docker/requirements.txt

# 运行API入口脚本
python /app/api.py

补充:

如果使用dockerfile进行环境定义,而以上配置没有dockerfile文件,也可以使用dockerfile文件进行构建,在docker目录下添加dockerfile文件:

# 基于镜像基础
FROM python:3.7.04b
# 创建代码文件夹工作目录 /code 
RUN mkdir /code 
# 复制当前代码文件到容器中 /code 
COPY . /code 
# 安装所需的包
RUN pip install -r /code/requirements.txt -i https://pypi.douban.com/simple
# 指定cmd的工作目录 /code
WORKDIR /code
CMD ["python", "/app/api.py"]

docker-compose.yml修改为如下(简单示例):

version: '3'
services:
  docker-python-demo:
    build: .
    ports:
     - "8880:8880"

# redis: # image: "redis:alpine"

运行

在docker目录执行下面命令,如需后台运行,加参数 -d:

docker-compose up

其他常用命令:

在后台运行服务:
$ docker-compose up -d

查看当前运行服务:
$ docker-compose ps

查看web服务在使用的环境变量:
$ docker-compose run web env

停止服务:
$ docker-compose stop

停止并删除容器,网络,允许和卷
$ docker-compose down --volumes

验证服务

在浏览器中访问:

http://127.0.0.1:8880/HelloWorld?name=2021

 

 

posted @ 2021-01-04 21:42  -零  阅读(3450)  评论(0编辑  收藏  举报