美文网首页
docker部署django

docker部署django

作者: aq_wzj | 来源:发表于2020-08-17 19:52 被阅读0次

    急着部署, 不一定好用, 反正能用

    Ubuntu 16.04

    1. 项目数据库, mq, redis等配置

    在docker里面访问宿主机的服务

    通过ifconfig查看docker0的inet addr, 一般为172.17.0.1, 则在项目里面的数据库地址就写172.17.0.1

    2. 宿主机目录树

    root@localhost:~/opt/mydockerimage# tree
    .
    ├── proj.zip  # 项目根目录打包文件
    ├── dockerfile  # dockerfile
    ├── pip.conf   # pip源
    ├── Shanghai # 时区文件, 来自/usr/share/zoneinfo/Asia/Shanghai
    └── sources.list # 
    
    proj.zip解压后大概如下
    proj
    ├── proj  #
    ├── app01  # app
             └── apps.py
    ├── requirements.txt   # pip模块列表
    ├── uwsgi.ini
    └── manage.py
    

    uwsgi.ini

    [uwsgi]
    http  = 0.0.0.0:7001
    chdir      = /proj
    module     = proj.wsgi
    master     = true
    processes  = 4
    vacuum     = false
    

    pip.conf

    [global]
    index-url = http://mirrors.aliyun.com/pypi/simple/
    [install]
    trusted-host=mirrors.aliyun.com
    

    3. dockerfile

    FROM ubuntu:16.04
    # 支持中文
    ENV LANG C.UTF-8
    #创建项目文件夹, 设项目名为proj
    RUN mkdir /root/proj-back/
    RUN mkdir /root/.pip/
    #时区配置
    RUN mkdir -p /usr/share/zoneinfo/Asia
    COPY Shanghai /usr/share/zoneinfo/Asia/Shanghai
    RUN rm /etc/localtime
    RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    # 换源
    COPY sources.list /etc/apt/sources.list
    COPY pip.conf /root/.pip/pip.conf
    # 项目复制进去
    COPY proj.zip /root/proj-back/proj.zip
    # 软件安装
    RUN apt update
    RUN apt install unzip -y
    RUN apt install software-properties-common -y
    RUN add-apt-repository ppa:deadsnakes/ppa -y
    RUN apt update
    RUN apt install python3.6 -y
    RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1
    RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2
    RUN update-alternatives --config python3
    RUN apt-get install python3-pip -y
    RUN pip3 install --upgrade pip
    RUN apt-get install build-essential python3.6-dev libssl-dev libffi-dev libxml2 libxml2-dev libxslt1-dev zlib1g-dev -y
    # 解压项目
    RUN unzip /root/proj-back/proj.zip
    # 安装pip模块
    RUN pip3 install -r proj/requirements.txt
    # 如果有celery,执行这一个, 没有注释
    RUN echo "nohup python3 /proj/manage.py celery worker & >/dev/null 2>&1 &" >> /root/run.sh
    RUN echo "uwsgi --ini  /proj/uwsgi.ini" >> /root/run.sh
    EXPOSE 7001
    ENTRYPOINT  ["bash", "/root/run.sh"]
    

    4. 生成镜像

    root@localhost:~/opt/mydockerimage# docker build -t "xxxx/xxxxxxx:v2" .
    

    5. 本地镜像传到阿里云

    1. 登录阿里云Docker Registry
    sudo docker login --username=xxxxx registry.cn-hangzhou.aliyuncs.com
    2. 将镜像推送到Registry
    docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/命名空间/仓库名称:[镜像版本号]
    

    6. 拉取镜像

    如果是阿里云ECS, 走内网或者vpc
        docker login --username=xxxxx registry-vpc.cn-hangzhou.aliyuncs.com
        docker pull registry-vpc.cn-hangzhou.aliyuncs.com/命名空间/仓库名称:[镜像版本号]
    如果是非阿里云ECS
        docker login --username=xxxxx registry.cn-hangzhou.aliyuncs.com
        docker pull registry.cn-hangzhou.aliyuncs.com/命名空间/仓库名称:[镜像版本号]
    

    7. 启动镜像

    限制只能通过127.0.0.1访问, 然后再通过nginx代理

    docker run \
    -d \
    --restart=always \
    -p 127.0.0.1:7001:7001 \
    -v /opt/proj:/proj \
    --name proj \
    registry-vpc.cn-hangzhou.aliyuncs.com/命名空间/仓库名称:[镜像版本号]
    

    vim /etc/nginx/conf.d/api.conf

    server {
       listen   80;
       server_name api.example.com;
       client_max_body_size 100M;
       # 开启ssl认证
       ssl on;
       ssl_certificate   cert/api/a.pem;  #.pey文件相对路径
       ssl_certificate_key  cert/api/a.key; # .key文件相对路径
       ssl_session_timeout 10m;
       ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
       ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
       ssl_prefer_server_ciphers on;
       # 请求转发
       location /proj1/ {
                   proxy_pass http://127.0.0.1:7001/;
       }
       location /proj2/ {
                   proxy_pass http://127.0.0.1:7002/;
       }
    
    }
    

    相关文章

      网友评论

          本文标题:docker部署django

          本文链接:https://www.haomeiwen.com/subject/aaxcjktx.html