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 @   -零  阅读(3887)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
历史上的今天:
2020-01-04 wxPython笔记:wxpython常用控件总结(转载)
2020-01-04 wxpython笔记:wxPython的布局管理实践【嵌入matplotlib、页面切换】
2020-01-04 wxpython笔记:wxpython的界面布局方式(二)
点击右上角即可分享
微信分享提示