美文网首页
Docker 封装Django+apache+mod_wsgi应

Docker 封装Django+apache+mod_wsgi应

作者: 竞媒体 | 来源:发表于2019-07-11 17:36 被阅读0次

    第一步:首先安装docker   ubuntu系统

    参考链接:https://docs.docker.com/install/linux/docker-ce/ubuntu/

    命令如下:

    $ sudo apt-get remove docker docker-engine docker.io containerd runc

    $ sudo apt-get update

    $ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

    第二步:拉取python:3.7镜像 

    docker pull python:3.7

    docker images  查看下载的镜像

    第三步:进入Django 项目主目录

    下载 mod_wsgi 

    wget  https://files.pythonhosted.org/packages/26/03/a3ed5abc2e66c82c40b0735c2f819c898d136879b00be4f5537126b6a4a4/mod_wsgi-4.6.7.tar.gz

    apache 配置文件也放入主目录  000-default.conf 我的文件内容如下

    <VirtualHost *:8000>

    WSGIScriptAlias / /usr/src/app/devops/wsgi.py

     WSGIPAssAuthorization On

            <Directory /usr/src/app/devops/>

            <Files wsgi.py>

            Require all granted

            </Files>

            </Directory>

            # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,

            # error, crit, alert, emerg.

            # It is also possible to configure the loglevel for particular

            # modules, e.g.

            #LogLevel info ssl:warn

            ErrorLog ${APACHE_LOG_DIR}/error.log

            CustomLog ${APACHE_LOG_DIR}/access.log combined

            # For most configuration files from conf-available/, which are

            # enabled or disabled at a global level, it is possible to

            # include a line for only one particular virtual host. For example the

            # following line enables the CGI configuration for this host only

            # after it has been globally disabled with "a2disconf".

            #Include conf-available/serve-cgi-bin.conf

    </VirtualHost>

    python3.7 库文件widgets.py  152行修改为  '%s=%s' % (k, v) for k, v in params.items()

    将修改的文件也放入主目录  

    上面的这些文件你也可以自己定义放置目录 

    创建文件 wsgi.load 

    LoadModule  wsgi_module /usr/lib/apache2/modules/mod_wsgi.so

    第四步:编辑Dockerfile

    FROM python:3.7

    #创建工作目录

    RUN mkdir -p /usr/src/app

    WORKDIR /usr/src/app

    #安装apache2

    RUN apt-get update -y

    RUN apt-get install -y apache2 apache2-dev

    #拷贝项目文件

    COPY . .

    #项目包的安装

    RUN pip install -r requirements.txt

    COPY ./widgets.py /usr/local/lib/python3.7/site-packages/django/contrib/admin/

    #替换apache2配置

    COPY 000-default.conf /etc/apache2/sites-available/

    mv wsgi.load /etc/apache2/mods-available

    #安装mod_wsgi

    RUN tar zxvf mod_wsgi-4.6.7.tar.gz

    RUN cd mod_wsgi-4.6.7 && ./configure --with-python=/usr/local/bin/python && make && make install

    RUN cd /etc/apache2/mods-enabled && ln -sf ../mods-avaliable/wsgi.load  wsgi.load

    EXPOSE 80

    #apache启动脚本

    RUN echo -e '#!/bin/bash\napachectl -k start\n/bin/bash' >/etc/apache2/auto_service.sh &&\

            chmod 777 /etc/apache2/auto_service.sh

    CMD ['/etc/apache2/auto_service.sh']

    第五步:建立镜像

    docker build --no-cache -t apache:v1 .

    第六步:创建容器

    docker run --privileged -d --name apache -p 6003:80 -t apache:v1

    第七步:访问   http://localhost:6003 没有问题就可以正常访问。

    如有异常 docker exec -i -t apache /bin/bash  命令可以进入容器查看异常

    相关文章

      网友评论

          本文标题:Docker 封装Django+apache+mod_wsgi应

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