站长网_站长创业_站长主页_站长之家_易采站长站

会员投稿 投稿指南 站长资讯通告: Prometheus 整合 AlertManager的教程详解
搜索:
您的位置: 主页 > 教程 > 服务器 > FTP服务器 > » 正文

使用docker部署django技术栈项目的方法步骤

来源: 易采站长站

随着Docker的普及成熟,已经逐渐成为部署项目的首选,今天来和大家分享下如何使用docker部署django技术栈项目。

我们这里说的Django技术栈为:python3.6、Django2.2、redis、mysql、celery、gunicorn和nginx。在实际的生产项目中,这些组件分布在集群的不同机器,如Nginx、redis和Mysql可能会有单独的团队或部门负责。涉及的部署架构和容器的编排会更为复杂,本文暂不去深究。本文主要介绍,如何使用 docker-compose 来编排这些组件,这种方式适用于测试环境的部署或者你的个人 sideproject 的部署。

本文默认你已经了解 docker 和 docker-compose 的一些基本知识,若你不了解,可阅读下面这些资料:

Docker知识大全 Docker官方文档 Docker Compose文档

下面我们来说下如何部署。

项目组织结构

首先,看下我们的项目组织结构,结构如下:

├── LICENSE
├── README.md
├── compose
│  ├── celery
│  │  ├── Dockerfile
│  │  ├── celery-beat.sh
│  │  └── celery.sh
│  ├── mysql
│  │  └── my.cnf
│  ├── nginx
│  │  └── nginx.conf
│  └── web
│    ├── Dockerfile
│    ├── entrypoint.sh
│    ├── gunicorn.conf
│    └── gunicorn.sh
├── docker-compose.yml
├── docker_django_demo
│  ├── __init__.py
│  ├── celery.py
│  ├── settings.py
│  ├── urls.py
│  └── wsgi.py
├── env.tpl
├── manage.py
├── requirements.txt

除了Django的项目文件外,主要增加了 compose 配置文件目录和 docker-compose.yml 配置文件。

compose目录主要存放各组件的dockerfile文件和启动脚本。 docker-compose.yml 是docker-compose的编排配置文件。

编写Dockerfile 及启动初始化脚本

在docker-compose中,容器的启动有两种方法,一种是直接使用公共的镜像来启动容器,另一种是通过我们自己编写的Dockerfile。因为我们要安装额外的工具包和初始化相关配置,web和celery组件我们使用自定义的Dockerfile方式。

web容器的 compose/web/Dockerfile :

FROM python:3.6
ENV PYTHONUNBUFFERED 1

RUN mkdir /code
WORKDIR /code

COPY ./requirements.txt /code/
RUN pip install --no-cache-dir -r requirements.txt \
  && rm -rf requirements.txt

COPY . /code/
COPY ./compose/web/*.sh /code/
RUN sed -i 's/\r//' gunicorn.sh \
  && chmod +x gunicorn.sh \
  && sed -i 's/\r//' entrypoint.sh \
  && chmod +x entrypoint.sh

ENTRYPOINT ["/bin/bash", "entrypoint.sh"]

web容器的其他文件:

compose/web/entrypoint.sh web容器的启动脚本,执行一些初始化或检测逻辑。 compose/web/gunicorn.conf gunicorn配置文件。 compose/web/gunicorn.sh gunicorn的启动脚本。

celery的Dockerfile:

Tags:
最新图文资讯
1 2 3 4 5 6
易采站长站 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助 -