关于环境的麻烦事
软件开发最大的麻烦事之一,就是环境配置。用户计算机的环境不相同,可能导致软件无法运行。
要使软件运行正确,用户必须保证两件事:操作系统的设置,各种库和组件的安装。只有它们都正确,软件才能运行。举例来说,安装一个 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应用的部署。