Docker+Django+Gunicorn+Nginx+Mysql容器化部署(上)

一、开发环境

  • CentOs==7
  • Docker==20.10.3
  • Docker-compose==1.25.5
  • Python==3.8
  • Django==3.1.0
  • Nginx==1.18.0
  • Mysql==5.7

二、为什么要用Docker

一般方式部署

以部署Django+Nginx+Mysql项目为例,我们在不使用容器技术(例如Docker)部署时,需要分别在服务器上安装PythonNginxMysql,需要执行十几条命令。而如果下次使用的服务器系统更换,比如从Linux换成Windows,则上次使用的命令就不管用了,不同系统使用的命令不一样,我们需要重新去学习部署。如果我们要同时部署多台服务器,并且系统环境不一样时,那么我们的工作量就会变得更大并且繁琐。

使用Docker部署

Docker是一个开源的应用容器引擎,它会将项目与项目运行所需要的环境一起打包进一个容器中,这个容器与外界隔绝,不管外界是Linux还是Windows环境,项目都可以在容器中从容运行。所以我们只需要学习如何在不同系统环境中使用Docker构建容器即可。

三、部署前准备

本次项目部署使用的服务器环境是Centos7,我们先在服务器上安装

  • Docker
  • Docker-compose

其中Docker-compose是Docker官方推出的用于编排、运行多个容器的工具,因为在项目中我们需要用到DjangoNginxMysql三个组件。虽然可以将三个组件安装到一个容器中,但是为了方便复用,更推荐将三个组件分别安装进一个独立的容器中,单独运行。

安装docker

1、卸载旧版本的docker和相关依赖项

sudo yum remove docker \
                docker-client \
                docker-client-latest \
                docker-common \
                docker-latest \
                docker-latest-logrotate \
                docker-logrotate \
                docker-engine

2、安装依赖

sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2

3、配置稳定的repositories(此处是使用的官方源地址,如果慢的话,可以更换为国内地址,例如阿里云的地址:http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo )

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo"

4、安装docker,安装完成后,可以通过 docker version 命令查看docker信息

sudo yum install docker-ce docker-ce-cli containerd.io

此处附上docker官方的安装文档: https://docs.docker.com/engine/install/centos/

安装docker-compose

1、安装docker-compose

sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

2、给docker-compose执行权限,可以通过 docker-compose --version 命令查看docker-compose信息

sudo chmod +x /usr/local/bin/docker-compose

此处附上docker-compose官方的安装文档: https://docs.docker.com/compose/install/

四、总结

本章内容简单介绍了使用docker部署项目的优势以及如何在Linux环境下安装Docker。有兴趣的同学可以关注公众号「码途有道」。下章内容将具体讲解如何使用docker构建容器来部署项目。最后附上常用的Docker操作命令:

  • docker ps -a:查看所有的容器状态
  • docker exec -it <容器名/容器ID> /bin/bash:进入正在运行的容器中
  • docker stop <容器名/容器ID>:停止正在运行的容器
  • docker rm <容器名/容器ID>:删除容器(只能删除停止运行的容器)
  • docker rmi <镜像名>:删除镜像
  • systemctl start docker.service:启动Docker服务
  • systemctl stop docker.service:停止Docker服务
  • systemctl restart docker.service:重启Docker服务
  • systemctl enable docker.service:将Docker服务配置为开机自启动
  • systemctl is-enabled docker.service:检查Docker服务是否开机自启动
  • systemctl disable docker.service:禁止Docker开机启动

你可能感兴趣的:(Docker+Django+Gunicorn+Nginx+Mysql容器化部署(上))