Bob's Blog

Web开发、测试框架、自动化平台、APP开发、机器学习等

返回上页首页

Dockerfile创建python+django+uwsgi+nginx相关的镜像



在工作中刚好遇到需要做CI/CD的情况,需要把当前的web系统构建成docker镜像。经过一些折腾完成了,于是分享一下Dockerfile。

需要的环境是python3, django, uwsgi, nginx。目前没有能直接满足的镜像,于是自己写了一份Dockerfile来构建。构建的步骤是拉取ubuntu,安装python3.6和nginx,再安装python依赖包,将nginx的配置文件拷进nginx目录,并在docker run时直接启动web服务。

最后的部分是暴露出80端口,因为只能执行一个CMD,但我是需要先启动uwsgi再启动nginx,就不能按照常用的来

CMD ["nginx", "-g", "daemon off;"]

这样虽然能启动nginx并保证docker run不退出,但是还差了uwsgi的启动。于是需要把两个命令写在一起,这样也只有一个CMD,也能同时启动多个进程

CMD ["sh", "-c", "uwsgi -i /mysite/config/uwsgi.ini && nginx -g 'daemon off;'"]

文件内容如下

FROM ubuntu:18.04

RUN apt-get update && \
    apt-get upgrade -y && \
    apt-get install -y vim && \
    apt-get install -y \
        python3 \
        python3-dev \
        python3-setuptools \
        python3-pip \
        nginx && \
    rm -rf /var/lib/apt/lists/*

WORKDIR /mysite
COPY ./ ./
RUN pip3 install -r requirement.txt
RUN cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf-default
COPY ./config/nginx.conf /etc/nginx/nginx.conf

EXPOSE 80
CMD ["sh", "-c", "uwsgi -i /mysite/config/uwsgi.ini && nginx -g 'daemon off;'"]

build完成后就可以运行并查看效果了。

docker images
# REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
# <none>                     <none>              bf21da761d8f        8 seconds ago       605MB

docker run -p 80:80 bf21da761d8f
# [uWSGI] getting INI configuration from /mysite/config/uwsgi.ini

此时打开localhost就能看到对应的页面了。

也可以运行'docker exec -it cbead25a54f7 /bin/bash'进入container去查看和修改。

------------------------------------

上面的是用的ubuntu,也可以用centos+python36的镜像。

FROM centos/python-36-centos7

USER root
RUN yum -y install epel-release && \
    yum -y install nginx && \
    yum clean all

WORKDIR /mysite
COPY ./ ./
RUN pip install --upgrade pip
RUN pip install -r requirement.txt
RUN cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf-default
COPY ./config/nginx.conf /etc/nginx/nginx.conf

EXPOSE 80
CMD ["sh", "-c", "uwsgi -i /mysite/config/uwsgi.ini && nginx -g 'daemon off;'"]

 

下一篇:  Django restframework加Vue打造前后端分离的网站(五)rest和vue的初步结合
上一篇:  Django restframework加Vue打造前后端分离的网站(四)生成接口文档

共有0条评论

添加评论

暂无评论