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開機啟動
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容