基于Docker的部署Django应用

关于环境的麻烦事

软件开发最大的麻烦事之一,就是环境配置。用户计算机的环境不相同,可能导致软件无法运行。

要使软件运行正确,用户必须保证两件事:操作系统的设置,各种库和组件的安装。只有它们都正确,软件才能运行。举例来说,安装一个 Python 应用,计算机必须有 Python 引擎,还必须有各种依赖,可能还要配置环境变量。

传统虚拟机因为资源占用多、冗余步骤多、启动慢已经逐步被Linux容器取代,Docker则是Linux容器里目前使用最广的技术了。

Docker 介绍

Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。

Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

关于Docker的其他介绍,可以参考以往文章:

初识Docker

Docker 数据持久化Volume

企业级Docker仓库-Harbor

使用 Docker 搭建 SonarQube 代码扫描平台

Docker版Jenkins持续集成

Jenkins + GitLab + Dockers 部署 Spring Boot 应用

Docker部署Django应用

今天这篇文章给大家介绍如何使用部署Django应用,还是使用传统的Nginx + uwsgi + Django 方式。

Nginx镜像构建

由于官方的Nginx需要对配置文件进行修改,即可符合我们的使用方式,所以我们以准备好的配置文件替代原有文件即可。

Dokcerfile:

基础镜像

FROM nginx

维护信息

MAINTAINER mango.zuo@testops.cn

新建autoTest目录以便访问django应用

RUN mkdir -p /var/www/html/autoTest

复制配置文件以符合项目需要

ADD default.conf /etc/nginx/conf.d/default.conf

开放端口

EXPOSE 8000

启动命令

CMD nginx -g “daemon off;”

镜像构建命令:

docker build -t my-nginx:1.0 .

容器启动命令(提前切换到autoTest所在目录下):

docker run -d -p 8000:8000 -v $PWD/autoTest:/var/www/html/autoTest my-nginx:1.0

uwsgi + Django镜像构建

关于Django镜像的构建,我们将对应的项目代码拷贝到容器中(当然也可以通过挂载的方式)。

Dockerfile文件:

基础镜像

FROM python:3.7

维护信息

MAINTAINER mango@testops.cn

拷贝项目代码

ADD autoTest/ /autoTest

切换工作路径

WORKDIR /autoTest

安装第三方依赖包(可以使用虚拟环境方式)

RUN pip install -r requirements.txt \
&& python manage.py migrate

开放端口

EXPOSE 8007

启动uwsgi服务器

ENTRYPOINT [“./start_uwsgi.sh”]

镜像构建命令:

docker build -t autotest:1.0 .

容器启动命令(提前切换到autoTest所在目录下):

docker run -d -p 8007:8007 -v $PWD/autoTest:/autoTest autotest:1.0

如此即可简单完成Django应用的部署。

后记

关于 Docker的使用有更多更深入的内容,如有兴趣可以关注我们的《测试开发从零开始课程》哟~

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/186830.html

(0)
联系我们
联系我们
分享本页
返回顶部