zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    四则运算
    读书计划
    典型用户和场景分析
    课堂练习--电梯调度
    重力解锁--用户需求调研
    书籍促销活动优惠问题
    小组开发项目--NABC分析
    梦断代码读后感之终结篇
    结对开发-求环状二维数组最大子数组
    结对开发之大数溢出
  • 原文地址:https://www.cnblogs.com/-wenli/p/14232721.html
Copyright © 2011-2022 走看看