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
    

      

     

  • 相关阅读:
    Linux环境下安装JDK
    CentOS 7 更改主机名
    Find Pivot Index之Python实现
    MySQL基本操作之数据库基本操作
    Linux环境下安装单实例MySQL 5.7
    基于时间的ACL配置
    动态ACL的配置
    自反ACL
    OSFPv3的配置
    RIPng 配置
  • 原文地址:https://www.cnblogs.com/SunshineKimi/p/14924344.html
Copyright © 2011-2022 走看看