zoukankan      html  css  js  c++  java
  • docker 后端部署架构

    django-docker                ## 项目根路径
    │  .gitignore                    # git忽略不上传的文件
    │  docker-compose.yml            # docker-compose文件
    │  Dockerfile                    # 部署django项目的dockerfile
    │  README.md                     # 项目Readme说明
    │  requirements.txt              # 项目必须要安装的文件
    │
    ├─nginx                      ## nginx容器配置文件
    │  │  nginx.conf                 # /etc/nginx/nginx.conf配置文件
    │  │
    │  └─conf                        # /etc/nginx/conf.d配置nginx文件夹
    │          default.conf
    │
    └─web                        ## 部署django项目的web容器
        │  manage.py
        │  uwsgi.ini                 # django项目的uwsgi配置文件 
        │
        ├─demoapp
        │  │  admin.py
        │  │  apps.py
        │  │  models.py
        │  │  tasks.py               # 配置celery任务文件
        │  │  tests.py
        │  │  urls.py
        │  │  views.py
        │  │  __init__.py
        │  │
        │  ├─migrations
        │  │      __init__.py        # 引入celery
        │  │
        │  └─templates
        │      └─demoapp
        │              celery_detail.html          # 查看具体celery执行结果页面
        │              celery_index.html           # 查看对应celery任务页面
        │              index.html                  # 项目主页面
        │
        └─web
                celery.py           # celery配置文件
                settings.py
                urls.py
                wsgi.py
                __init__.py
    

      

    doclerfile

    FROM python:3
    ENV PYTHONUNBUFFERED=1
    RUN mkdir /code
    WORKDIR /code
    ADD requirements.txt /code/
    RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
    # ADD . /code/
    
    django-dockerDockerfile
    

      

    docker-compose

    version: '3'
    
    services:
      mysql:
        image: mysql:5.7
        volumes:
          - ./mysql:/var/lib/mysql
        expose:
          - "3306"
        restart: always
        environment:
          - MYSQL_ROOT_PASSWORD=root
          - MYSQL_DATABASE=djangodocker
          - MYSQL_USER=django
          - MYSQL_PASSWORD=django
    
      nginx:
        image: nginx:alpine
        volumes:
          - ./nginx/nginx.conf:/etc/nginx/nginx.conf
          - ./nginx/conf:/etc/nginx/conf.d
          - ./web/staticfiles:/django_static
        ports:
          - "80:80"
        depends_on:
          - web
    
      redis:
        image: redis:alpine
        expose:
          - "6379"
        restart: always
    
      web:
        build: .
        # command: python manage.py runserver 0:8000
        # ports:
        #   - "8000:8000"
        command: uwsgi --ini uwsgi.ini
        working_dir: /code/web
        volumes:
          - .:/code
        expose:
          - "8000"
        depends_on:
          - mysql
          - redis
    
      celery:
        build: .
        command: celery -A web worker -l info
        working_dir: /code/web
        volumes:
          - .:/code
        depends_on:
          - mysql
          - redis
    
    docker-compose.yml
    

     docker-compose 详解:

    version: '3'                       # cocker compose版本号
    
    services:                          # 顶级配置文件
      mysql:                           # 服务名: 容器建通信、管理容器
        image: mysql:5.7               # 引入官方mysql镜像
        volumes:
          - ./mysql:/var/lib/mysql         # 把当前文件夹下的 ./mysql文件夹挂载到docker容器 /var/lib/mysql 路径下
        expose:
          - "3306"                        # 将当前容器的端口3306端口暴露给link到本容器的容器
        restart: always                   # 宿主机重启自动拉起这个docker容器
        environment:
          - MYSQL_ROOT_PASSWORD=root             # mysql服务器root密码root
          - MYSQL_DATABASE=djangodocker          # 创建数据库 djangodocker
          - MYSQL_USER=django                    # 创建一个用户 django
          - MYSQL_PASSWORD=django                # 用户密码为django
    
      nginx:
        image: nginx:alpine
        volumes:
          - ./nginx/nginx.conf:/etc/nginx/nginx.conf
          - ./nginx/conf:/etc/nginx/conf.d
          - ./web/staticfiles:/django_static
        ports:
          - "80:80"                             # 绑定容器的80端口到主机的80端口
        depends_on:
          - web                                 # 必须先启动web容器然才能启动nginx容器
    
      redis:
        image: redis:alpine
        expose:
          - "6379"
        restart: always
    
      web:
        build: .
        # command: python manage.py runserver 0:8000
        # ports:
        #   - "8000:8000"
        command: uwsgi --ini uwsgi.ini             # 启动uwsgi命令
        working_dir: /code/web                     # 项目工作路径
        volumes:
          - .:/code                                # 将当前文件夹下所有文件挂载到容器的 /code 文件夹
        expose:
          - "8000"
        depends_on:                                # 必须mysql和reids容器启动后才能启动web容器
          - mysql
          - redis
    
      celery:
        build: .
        command: celery -A web worker -l info
        working_dir: /code/web
        volumes:
          - .:/code
        depends_on:
          - mysql
          - redis
    

      

     

  • 相关阅读:
    [译文] 实体与值对象到底是不是一回事?
    实现 WebApi 自托管服务宿主于 WinForms 及其交互
    [译文] C# 8 已成旧闻, 向前, 抵达 C# 9!
    [译文] 为什么你在 C# 里总是应该使用 "var" 关键字
    通过设置iis在局域网中访问网页
    windows 10 安装使用kafka
    ASP.NET Core 2.1 中的 HttpClientFactory (Part 4) 整合Polly实现瞬时故障处理
    ASP.NET Core 2.1 中的 HttpClientFactory (Part 3) 使用Handler实现传出请求中间件
    ASP.NET Core 2.1 中的 HttpClientFactory (Part 2) 定义命名化和类型化的客户端
    Asp.net Core 2.0 OpenId Connect Handler缺失Claims?
  • 原文地址:https://www.cnblogs.com/SunshineKimi/p/14924344.html
Copyright © 2011-2022 走看看