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
  • 相关阅读:
    (引)spring学习笔记1.什么是控制反转
    Arduino 各种模块篇 步进电机 step motor 舵机 servo 直流电机 总复习
    Raspberry Pi Wireless Adaptor
    Pyramid 使用总结1
    Arduino 各种模块篇 人体红外感应模块 proximity sensor
    Pyramid 使用总结2
    Webcam Streaming Desktop Recording on Linux for ubuntu or its destros
    Arduino 各种模块篇 步进电机 step motor( 不用库,不用shield, 纯)
    Arduino 各种模块篇 motor shield 电机扩展板(舵机、直流电机、步进电机party)
    转载 stepper motors
  • 原文地址:https://www.cnblogs.com/-wenli/p/14232721.html
Copyright © 2011-2022 走看看