首页 > 编程语言 >简单的python web项目的docker-compose.yml 示例

简单的python web项目的docker-compose.yml 示例

时间:2024-08-12 10:28:03浏览次数:11  
标签:web compose 示例 db yeping nginx mysql data

一个简单的 python web项目, 包含redis, mysql, nginx, 定时业务调度等
其中web启动注册了自定义命令 flask create-db && flask init-db && uwsgi /web/uwsgi.ini

version: '3.5'

services:
  db:
    image: mysql
    container_name: yeping_mysql
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_ROOT_PASSWORD: yeping9527
      MYSQL_DATABASE: yeping9527
      LANG: C.UTF-8
    volumes:
      - ./db_data:/var/lib/mysql
      - ./mysql_files:/var/lib/mysql-files
      - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro
    # ports: 
    #   - "127.0.0.1:3309:3306"
    restart: unless-stopped
    privileged: true
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
  redis:
    image: redis:alpine
    container_name: yeping_redis
    volumes:
      - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro
    restart: unless-stopped
    privileged: true
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
  web:
    image: yeping_web:v106
    container_name: yeping_web
    command: bash -c "wait-for-it -t 0 db:3306; wait-for-it -t 0 redis:6379; cd /web/主目录 && export FLASK_APP=sites && flask create-db && flask init-db && uwsgi /web/uwsgi.ini"
    volumes:
      - /root/.ssh/:/root/.ssh
      - .:/web
      - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro
      - ./db_data:/data/db_data
      - ./mysql_files:/data/mysql_files
    depends_on:
      - db
      - redis
    #ports:
    #  - 8112:8000
    restart: unless-stopped
    privileged: true
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
  nginx:
      image: nginx:alpine
      container_name: yeping_nginx
      environment:
        LANG: C.UTF-8
      ports:
        - "443:443"
        - "80:80"
      volumes:
        - /opt/work/yeping/config/nginx:/nginx
        - /opt/work/yeping:/opt/work/yeping
        - /opt/work/yeping/config/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
        - /var/log/yeping/nginx/:/var/log/yeping/nginx/
        - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro
      restart: unless-stopped
      privileged: true
      stdin_open: true
      tty: true
      logging:
        driver: "json-file"
        options:
          max-size: "10m"
  schedulers:
    image: yeping:v106
    container_name: yeping_schedulers
    command: sh -c 'cd /web/主目录 && python -u -m sites.scripts.schedulers'
    volumes:
      - .:/web
      - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro
      - /root/.ssh:/root/.ssh
      - ./db_data:/data/db_data
      - ./mysql_files:/data/mysql_files
    depends_on:
      - web
    restart: unless-stopped
    privileged: true
    logging:
      driver: "json-file"
      options:
        max-size: "10m"

自定义清库和数据库初始化命令

import click
@app.cli.command(help="Create all tables form models")
@click.option("--drop", is_flag=True, help="Create after drop.")
def create_db(drop):
    # 文件锁
    lock_file = "init_create.lock"
    if os.path.exists(lock_file):
        logging.warning("不是第一次启动,无需创建表。。。")
        return
    if drop:
        db.drop_all()
    db.create_all()
    os.mknod(lock_file)

@app.cli.command(help="Initialization app data")
def init_db():
    # 数据库初始化操作

标签:web,compose,示例,db,yeping,nginx,mysql,data
From: https://www.cnblogs.com/gatling/p/18354453

相关文章

  • 【Web API 】渗透测试指南
    一、概述1.1API的基本概念1.2API的作用1.3API的类型二、WebAPI渗透测试2.1测试工具2.2信息收集2.2.1目录扫描2.2.2网络流量分析2.2.3使用互联网资源2.3漏洞检测2.4实战案例2.4.1接口枚举2.4.......
  • Maven的概述及基本使用示例详解
    一、Maven简介ApacheMaven是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档官网:http://maven.apache.org/项目对象模型(ProjectObjectModel)依赖管理模型(Dependency)插件(Plugin)1.1、Maven概述Maven是专门用于......
  • 在IIS上部署ASP.NET Core Web API
    在IIS上部署ASP.NETCoreWebAPI和BlazorWasm详细教程  前言前段时间我们完成了七天.NET8操作SQLite入门到实战的开发系列教程,有不少同学留言问如何将项目发布部署到IIS上面运行。本篇文章我们就一起来讲讲在IIS上部署ASP.NETCoreWebAPI和BlazorWasm。前提条件......
  • RabbitMQ Web管理界面简介
    OverviewTotalsQueuedmessagesReadyNumberofmessagesthatareavaliabletobedeliverednow.待消费的消息数量一般来说,如果队列中ready状态的消息数量比较多,则说明消费者的处理能力可能不足,可以考虑适当增加消费者UnackedNumberofmessagesforwhichthe......
  • OpenWebUI + Ollma 构建本地AI知识库
    本机环境:rocky_linux9.4,10G8核,100G磁盘部署的实验 安装Docker#step1:安装必要的一些系统工具sudoyuminstall-yyum-utilsdevice-mapper-persistent-datalvm2#Step2:添加软件源信息sudoyum-config-manager--add-repohttps://mirrors.aliyun.com/docker-ce/......
  • 在Kali(Debian)系统上安装docker&docker-compose并给docker配置socks代理
    在Kali(Debian)系统上安装docker&docker-compose并给docker配置socks代理安装docker方法一:使用kali官方的安装方式(经测试,安装的docker版本为20.0)参考链接如下InstallingDockeronKaliLinux由于现在dockerhub的镜像站都挂了(可能?),为了方便的配置代理拉取镜像,推荐使用方......
  • xrender中的FormRender使用示例
    xrender是阿里的中后台「表单/表格/图表」开箱即用解决方案。先采用在线工具创建一个简单的schema:simple.tsexportdefault{"type":"object","properties":{"title":{"title":"标题","type&qu......
  • 通过示例了解 .NET Core 中的依赖注入
    依赖注入(DI)是一种用于实现IoC(控制反转)的设计模式,可以更好地解耦应用程序内的依赖关系并更轻松地管理它们。.NETCore内置了对依赖注入的支持,提供了一种有效管理依赖关系的强大方法。一.什么是依赖注入?依赖注入是一种技术,其中一个对象提供另一个对象的依赖项。“依赖......
  • Struts2基础1--创建一个Struts2 Web应用程序
    Struts2不仅仅是Struts1的升级版本,更是一个全新的Struts架构,是当前较为普及和成熟的基于MVC设计模式的Web应用程序框架,并在RIA(RichInternetApplications)Web应用程序开发中得到了广泛应用,成为最好的Web框架之一。本文将通过详细的步骤来说明如何下载获取相关资源、安装设置......
  • 项目管理工具Maven的简单配置示例
    Maven是一个强大的项目管理工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。以下是一些关于Maven的具体例子,涵盖了项目配置、依赖管理、插件使用等方面:1.Maven项目基础配置Maven项目的基础配置通常体现在pom.xml文件中,该文件是Maven项目的核......