千家信息网

Docker化Python Django应用程序的案例分析

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,这篇文章给大家分享的是有关Docker化Python Django应用程序的案例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Docker是一个开源项目,为开发人员和系
千家信息网最后更新 2024年09月22日Docker化Python Django应用程序的案例分析

这篇文章给大家分享的是有关Docker化Python Django应用程序的案例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

Docker是一个开源项目,为开发人员和系统管理员提供了一个开放平台,可以将应用程序构建、打包为一个轻量级容器,并在任何地方运行。Docker 会在软件容器中自动部署应用程序。
Django 是一个用 Python 编写的 Web 应用程序框架,遵循 MVC(模型-视图-控制器)架构。它是免费的,并在开源许可下发布。它速度很快,旨在帮助开发人员尽快将他们的应用程序上线。
在本教程中,我将逐步向你展示在 Ubuntu 16.04 中如何为现有的 Django 应用程序创建 docker 镜像。我们将学习如何 docker 化一个 Python Django 应用程序,然后使用一个 docker-compose 脚本将应用程序作为容器部署到 docker 环境。
为了部署我们的 Python Django 应用程序,我们需要其它 docker 镜像:一个用于 Web 服务器的 nginx docker 镜像和用于数据库的 PostgreSQL 镜像。

我们要做什么?

  1. 安装 Docker-ce

  2. 安装 Docker-compose

  3. 配置项目环境

  4. 构建并运行

  5. 测试

步骤 1 - 安装 Docker-ce

在本教程中,我们将从 docker 仓库安装 docker-ce 社区版。我们将安装 docker-ce 社区版和 docker-compose(其支持 compose 文件版本 3)。

在安装 docker-ce 之前,先使用 apt 命令安装所需的 docker 依赖项。

sudo apt install -yapt-transport-httpsca-certificatescurlsoftware-properties-common

现在通过运行以下命令添加 docker 密钥和仓库。

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -sudo add-apt-repository"deb [arch=amd64] https://download.docker.com/linux/ubuntu$(lsb_release -cs)stable"

安装 Docker-ce

更新仓库并安装 docker-ce。

sudo apt updatesudo apt install -y docker-ce

安装完成后,启动 docker 服务并使其能够在每次系统引导时启动。

systemctl start dockersystemctl enable docker

接着,我们将添加一个名为 omar 的新用户并将其添加到 docker 组。

useradd -m -s /bin/bash omarusermod -a -G docker omar

启动 Docker

以 omar 用户身份登录并运行 docker 命令,如下所示

su - omardocker run hello-world

确保你能从 Docker 获得 hello-world 消息

检查 Docker 安装

Docker-ce 安装已经完成。

步骤 2 - 安装 Docker-compose

在本教程中,我们将使用支持 compose 文件版本 3 的最新 docker-compose。我们将手动安装 docker-compose

使用 curl 命令将最新版本的 docker-compose 下载到 /usr/local/bin 目录,并使用 chmod 命令使其有执行权限。

运行以下命令:

sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-compose

现在检查 docker-compose 版本。

docker-compose version

确保你安装的是最新版本的 docker-compose 1.21

安装 Docker-compose

已安装支持 compose 文件版本 3 的 docker-compose 最新版本。

步骤 3 - 配置项目环境

在这一步中,我们将配置 Python Django 项目环境。我们将创建新目录 guide01,并使其成为我们项目文件的主目录,例如包括 Dockerfile、Django 项目、nginx 配置文件等。

登录到 omar 用户。

su - omar

创建一个新目录 guide01,并进入目录。

mkdir -p guide01cd guide01/

现在在 guide01 目录下,创建两个新目录 project 和 config。

mkdir project/ config/

注意:

  • project 目录:我们所有的 python Django 项目文件都将放在该目录中。

  • config 目录:项目配置文件的目录,包括 nginx 配置文件、python pip 的requirements.txt 文件等。

创建一个新的 requirements.txt 文件

接下来,使用 vim 命令在 config 目录中创建一个新的 requirements.txt 文件。

vim config/requirements.txt

粘贴下面的配置:

Django==2.0.4gunicorn==19.7.0psycopg2==2.7.4

保存并退出。

创建 Nginx 虚拟主机文件 django.conf
在 config 目录下创建 nginx 配置目录并添加虚拟主机配置文件 django.conf。

mkdir -p config/nginx/vim config/nginx/django.conf

粘贴下面的配置:

upstream web {ip_hash;server web:8000;}# portalserver {location / {proxy_pass http://web/;}listen 8000;server_name localhost;location /static {autoindex on;alias /src/static/;}}

保存并退出。

创建 Dockerfile
在 guide01 目录下创建新文件 Dockerfile。

运行以下命令:

vim Dockerfile

现在粘贴下面的 Dockerfile 脚本:

FROM python:3.5-alpineENV PYTHONUNBUFFERED 1RUN apk update &&apk add --virtual build-deps gcc python-dev musl-dev &&apk add postgresql-dev bashRUN mkdir /configADD /config/requirements.txt /config/RUN pip install -r /config/requirements.txtRUN mkdir /srcWORKDIR /src

保存并退出。

注意:

我们想要为我们的 Django 项目构建基于 Alpine Linux 的 Docker 镜像,Alpine 是最小的 Linux 版本。我们的 Django 项目将运行在带有 Python 3.5 的 Alpine Linux 上,并添加 postgresql-dev 包以支持 PostgreSQL 数据库。然后,我们将使用 python pip 命令安装在 requirements.txt 上列出的所有 Python 包,并为我们的项目创建新目录 /src。

创建 Docker-compose 脚本

使用 vim 命令在 guide01 目录下创建 docker-compose.yml 文件。

vim docker-compose.yml

粘贴以下配置内容:

version: '3'services:db:image: postgres:10.3-alpinecontainer_name: postgres01nginx:image: nginx:1.13-alpinecontainer_name: nginx01ports:- "8000:8000"volumes:- ./project:/src- ./config/nginx:/etc/nginx/conf.ddepends_on:- webweb:build: .container_name: django01command: bash -c "python manage.py makemigrations && python manage.py migrate && python manage.py collectstatic --noinput && gunicorn hello_django.wsgi -b 0.0.0.0:8000"depends_on:- dbvolumes:- ./project:/srcexpose:- "8000"restart: always

保存并退出。

注意:

使用这个 docker-compose 文件脚本,我们将创建三个服务。使用 alpine Linux 版的 PostgreSQL 创建名为 db 的数据库服务,再次使用 alpine Linux 版的 Nginx 创建 nginx 服务,并使用从 Dockerfile 生成的自定义 docker 镜像创建我们的 python Django 容器。

配置项目环境

配置 Django 项目

将 Django 项目文件复制到 project 目录。

cd ~/djangocp -r * ~/guide01/project/

进入 project 目录并编辑应用程序设置 settings.py。

cd ~/guide01/project/vim hello_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-compose build

运行 docker 镜像

启动 docker-compose 脚本中的所有服务。

docker-compose up -d

等待几分钟让 Docker 构建我们的 Python 镜像并下载 nginx 和 postgresql docker 镜像。

使用 docker-compose 构建镜像

完成后,使用以下命令检查运行容器并在系统上列出 docker 镜像。

docker-compose psdocker-compose images

现在,你将在系统上运行三个容器,列出 Docker 镜像,如下所示。

docke-compose ps 命令

我们的 Python Django 应用程序现在在 docker 容器内运行,并且已经创建了为我们服务的 docker 镜像。

步骤 5 - 测试

打开 Web 浏览器并使用端口 8000 键入服务器地址,我的是:http://ovh01:8000/。

现在你将看到默认的 Django 主页。

默认 Django 项目主页

接下来,通过在 URL 上添加 /admin 路径来测试管理页面。

http://ovh01:8000/admin/

然后你将会看到 Django 管理登录页面。

Django administration

Docker 化 Python Django 应用程序已成功完成。

感谢各位的阅读!关于"Docker化Python Django应用程序的案例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

目录 文件 项目 镜像 配置 应用程序 程序 应用 运行 命令 服务 容器 版本 数据 数据库 步骤 环境 脚本 用户 系统 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 服务器是否能设置启动盘 软件开发品牌大全 服务器里面增加的硬盘叫什么 曙光服务器有管理 阜阳跑腿app软件开发费用 铁路网络安全措施 在线人数最少的服务器 sipo数据库 数据库未声明变量名称怎么搞 饥荒怎么增加服务器管理员 徐汇区上门软件开发厂家售后保障 增员提示与数据库不符怎么回事 常熟市微派网络技术有限公司 sql远程配置连接数据库 snmp协议服务器没有怎么办 机构树的数据库表设计图 界面软件开发课程设计 淘宝网络安全漏洞维护人员 查看数据库中是否存在 安全管理如何为生产服务器 天龙八部1077服务器 银川市软件开发一般流程 服务器无显卡安装安卓模拟器 最新战地1服务器招人 打印服务器工具 web管理软件开发平台好吗 数据库为何不用倒排索引 东莞企学宝培训软件开发 美国一号网络技术有限公司 银行软件开发岗位裁员情况
0