基于Docker的部署Django应用

2022-04-07 16:03:42 浏览数 (1)

关于环境的麻烦事

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

要使软件运行正确,用户必须保证两件事:操作系统的设置,各种库和组件的安装。只有它们都正确,软件才能运行。举例来说,安装一个 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:

代码语言:javascript复制
# 基础镜像
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;"

镜像构建命令:

代码语言:javascript复制
docker build -t my-nginx:1.0 .

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

代码语言:javascript复制
docker run -d -p 8000:8000 -v $PWD/autoTest:/var/www/html/autoTest my-nginx:1.0

uwsgi Django镜像构建

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

Dockerfile文件:

代码语言:javascript复制
# 基础镜像
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"]

镜像构建命令:

代码语言:javascript复制
docker build -t autotest:1.0 .

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

代码语言:javascript复制
docker run -d -p 8007:8007 -v $PWD/autoTest:/autoTest  autotest:1.0

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

0 人点赞