Docker是一个开源项目,它为开发人员和系统管理员提供了一个开放平台,用于构建应用程序,将其打包为轻量级容器,并在任何地方运行。Docker在软件容器中自动部署应用程序。Django是一个用Python编写的Web应用程序框架,遵循MVC(模型-视图-控制器)架构。它是免费的,并在开源许可下发布。它速度很快,旨在帮助开发人员尽快让他们的应用程序上线。在本教程中,我将逐步向您展示如何在Ubuntu16.04中为现有Django应用程序创建docker镜像。我们将学习如何将PythonDjango应用程序dockerize,然后使用docker-compose脚本将应用程序作为容器部署到docker环境。为了部署我们的PythonDjango应用程序,我们需要其他docker镜像:用于Web服务器的nginxdocker镜像和用于数据库的PostgreSQL镜像。我们会做什么?安装Docker-ce安装Docker-compose配置项目环境构建并运行测试步骤1-安装Docker-ce在本教程中,我们将从docker存储库安装docker-ce社区版。我们将安装docker-ce社区版和docker-compose(支持compose文件版本3)。在安装docker-ce之前,使用apt命令安装所需的docker依赖项。sudoaptinstall-y\apt-transport-https\ca-certificates\curl\software-properties-common现在通过运行以下命令添加docker密钥和存储库。卷曲-fsSLhttps://download.docker.com/linux/ubuntu/gpg|sudoapt-keyadd-sudoadd-apt-repository\"deb[arch=amd64]https://download.docker.com/linux/ubuntu\$(lsb_release-cs)\stable"安装Docker-ce更新仓库和安装docker-ce。sudoaptupdatesudoaptinstall-ydocker-ce安装后,启动docker服务并使其在每次系统启动时启动。systemctlstartdockersystemctlenabledocker接下来,我们将添加一个名为omar的新用户并将其添加到docker组中。useradd-m-s/bin/bashomarusermod-a-Gdockeromar启动Docker以omar用户登录,运行docker命令,如下图。su-omardockerrunhello-world确保您从Docker获得了hello-world消息。检查Docker安装Docker-ce安装完成。第2步-安装Docker-compose在本教程中,我们将使用支持compose文件版本3的***docker-compose。我们将手动安装docker-compose。使用curl命令下载最新版本的docker-compose到/usr/local/bin目录下,使用chmod命令使其可执行。运行以下命令:sudocurl-Lhttps://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname-s)-$(uname-m)-o/usr/local/bin/docker-composesudochmod+x/usr/local/bin/docker-compose现在检查docker-compose版本。docker-composeversion确保安装了最新版本的docker-compose1.21。安装Docker-compose会安装一个***版本的docker-compose,支持composefileversion3。第三步——配置项目环境在这一步中,我们将配置PythonDjango项目环境。我们将创建一个新目录guide01并将其作为我们项目文件的主目录,包括例如Dockerfile、Django项目、nginx配置文件等。登录到omar用户。su-omar新建一个目录guide01,并进入该目录。mkdir-pguide01cdguide01/现在在guide01目录中,新建两个目录project和config。mkdirproject/config/注意:项目目录:我们所有的pythonDjango项目文件都会放在这个目录下。config目录:项目配置文件所在目录,包括nginx配置文件、pythonpip的requirements.txt文件等新建requirements.txt文件接下来,使用vim命令在config目录下新建requirements.txt文件。vimconfig/requirements.txt粘贴如下配置:Django==2.0.4gunicorn==19.7.0psycopg2==2.7.4保存退出。创建Nginx虚拟主机文件django.conf在config目录下创建nginx配置目录,添加虚拟主机配置文件django.conf。mkdir-pconfig/nginx/vimconfig/nginx/django.conf粘贴以下配置:upstreamweb{ip_hash;服务器web:8000;}#portalserver{location/{proxy_passhttp://web/;}听8000;服务器名称本地主机;位置/static{autoindexon;别名/src/static/;}}保存并退出。创建Dockerfile在guide01目录下创建一个新文件Dockerfile。运行以下命令:vimDockerfile现在粘贴以下Dockerfile脚本:FROMpython:3.5-alpineENVPYTHONUNBUFFERED1RUNapkupdate&&\apkadd--virtualbuild-depsgccpython-devmusl-dev&&\apkaddpostgresql-devbashRUNmkdir/configADD/config/requirements.txt/config/RUNpipinstall-r/config/requirements.txtRUNmkdir/srcWORKDIR/src保存并退出。注意:我们想为基于AlpineLinux的Django项目构建Docker镜像,这是一个最小的Linux发行版。我们的Django项目将使用Python3.5在AlpineLinux上运行,并添加postgresql-dev包以支持PostgreSQL数据库。然后,我们将使用pythonpip命令安装requirements.txt中列出的所有Python包,并为我们的项目创建一个新目录/src。创建Docker-compose脚本使用vim命令在guide01目录下创建docker-compose.yml文件。vimdocker-compose.yml粘贴以下配置内容:version:'3'services:db:image:postgres:10.3-alpinecontainer_name:postgres01nginx:image:nginx:1.13-alpinecontainer_name:nginx01ports:-"8000:8000“卷:-./project:/src-./config/nginx:/etc/nginx/conf.ddepends_on:-webweb:build:.容器名称:django01命令:bash-c"p??ythonmanage.pymakemigrations&&pythonmanage.pymigrate&&pythonmanage.pycollectstatic--noinput&&gunicornhello_django.wsgi-b0.0.0.0:8000"depends_on:-dbvolumes:-。/project:/srcexpose:-"8000"restart:alwayssaveandexit.注意:使用此docker-compose文件脚本,我们将创建三个服务。使用适用于alpineLinux的PostgreSQL创建一个名为db的数据库服务,使用适用于alpineLinux的Nginx再次创建一个nginx服务,并使用从Dockerfile生成的自定义docker镜像创建我们的pythonDjango容器。配置项目环境配置Django项目将Django项目文件复制到项目目录。cd~/djangocp-r*~/guide01/project/进入项目目录并编辑应用程序设置settings.py。cd~/guide01/project/vimhello_django/settings.py注意:我们将部署一个名为“hello_django”的简单Django应用程序。在ALLOW_HOSTS行中,添加服务名称web。ALLOW_HOSTS=['web']现在更改数据库设置,我们将使用PostgreSQL数据库以默认用户和密码运行名为db的服务。DATABASES={'default':{'ENGINE':'django.db.backends.postgresql_psycopg2','NAME':'postgres','USER':'postgres','HOST':'db','PORT':5432,}}对于STATIC_ROOT配置目录,将此行添加到文件行的末尾。STATIC_ROOT=os.path.join(BASE_DIR,'static/')保存并退出。配置Django项目现在我们准备在docker容器下构建和运行Django项目。第4步-构建并运行Docker镜像在这一步中,我们要使用guide01目录中的配置为我们的Django项目构建一个Docker镜像。转到guide01目录。cd~/guide01/现在使用docker-compose命令构建docker镜像。docker-composebuild运行docker镜像以启动docker-compose脚本中的所有服务。docker-composeup-d等待几分钟让Docker构建我们的Python镜像并下载nginx和postgresqldocker镜像。使用docker-compose构建镜像完成后,使用以下命令检查正在运行的容器并列出系统上的docker镜像。docker-composepsdocker-composeimages您现在将在系统上运行三个容器,列出Docker映像,如下所示。docker-composeps我们的PythonDjango应用程序现在在docker容器中运行,并且已经创建了一个docker镜像来为我们服务。第5步-测试打开Web浏览器并使用端口8000输入服务器地址,我的是:http://ovh01:8000/。您现在将看到默认的Django主页。默认的Django项目主页接下来,通过将/admin路径添加到URL来测试管理页面。http://ovh01:8000/admin/然后你会看到Django管理登录页面。Django管理DockerizedPythonDjango应用程序成功完成。参考https://docs.docker.com/
