iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么使用Docker组件开发Django项目
  • 274
分享到

怎么使用Docker组件开发Django项目

2023-06-19 10:06:12 274人浏览 薄情痞子
摘要

本篇内容主要讲解“怎么使用Docker组件开发Django项目”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Docker组件开发DjanGo项目”吧!Docker 是一个开源的应用容器引

本篇内容主要讲解“怎么使用Docker组件开发Django项目”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Docker组件开发DjanGo项目”吧!

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 linux 机器上,也可以实现虚拟化。自2013年发布以来,无论是从 GitHub 上的代码活跃度,还是 Redhat 在 RHEL6.5 中集成对 Docker 的支持, 就连 Google 的 Compute Engine 也支持 Docker 在其之上运行。火热程度可见一斑!

本篇文章详细介绍了如何通过 Docker Machine 「系统配置」和 Docker Compose 「多容器应用组装」 提供堆栈完成 Postgres, Redis 和 Django 项目相结合的开发。

而在最后,该堆栈将包括如下每个服务的单独的容器:

  • 一个 WEB/ Django 的容器

  • 一个 Nginx 的容器

  • 一个 Postgres 的容器

  • 一个 Redis 的容器

  • 一个 Data 容器

##本地设置

使用 Docker「v1.6.1」版本我们将使用到 Docker Compose 「v1.2.0」编排一个多容器组成的应用程序,使用 Docker Machine「v0.2.0」创建本地和云的 Docker 主机。 按照指示,分别安装 Docker Compose 和 Machine,然后测试安装结果:

$ docker-machine --version docker-machine version 0.2.0 (8b9eaf2) $ docker-compose --version docker-compose 1.2.0

接下来,根据以下项目结构从realpython/dockerizing-django克隆一份项目或自己创建项目:

├── docker-compose.yml ├── nginx │   ├── Dockerfile │   └── sites-enabled │   └── django_project ├── production.yml └── web │   ├── Dockerfile │   ├── docker_django │   │   ├── __init__.py │   │   ├── apps │   │   │   ├── __init__.py │   │   │   └── todo │   │   │   ├── __init__.py │   │   │   ├── admin.py │   │   │   ├── models.py │   │   │   ├── templates │   │   │   │   ├── _base.html │   │   │   │   └── home.html │   │   │   ├── tests.py │   │   │   ├── urls.py │   │   │   └── views.py │   │   ├── settings.py │   │   ├── urls.py │   └── wsgi.py │   ├── manage.py │   ├── requirements.txt │   └── static │   │   └── main.CSS</code>

现在我们准备容器运行……

##Docker Machine

开启 Docker Machine,只需运行:

$ docker-machine create -d virtualbox dev;INFO[0000] Creating CA: /Users/michael/.docker/machine/certs/ca.pemINFO[0000] Creating client certificate: /Users/michael/.docker/machine/certs/cert.pemINFO[0001] Downloading boot2docker.iso to /Users/michael/.docker/machine/cache/boot2docker.iso...INFO[0035] Creating ssh key...INFO[0035] Creating VirtualBox VM...INFO[0043] Starting VirtualBox VM...INFO[0044] Waiting for VM to start...INFO[0094] "dev" has been created and is now the active machine.INFO[0094] To point your Docker client at it, run this in your shell: eval "$(docker-machine env dev)"

这个 create 命令设置一个新的 Machine「开发环境」。实际上,它是下载 Boot2Docker 并开始运行 VM。现在只要在开发环境下指定 Docker:

$ eval "$(docker-machine env dev)"

运行以下命令来查看当前正在运行的机器:

$ docker-machine ls NAME  ACTIVE  DRIVER  STATE  URL dev * virtualbox Running tcp://192.168.99.100:2376

接下来,我们会让 Django,Postgres 和 Redis 的容器运行起来。

##Docker Compose

让我们看一看 docker-compose.yml 文件:

web:   restart: always   build: ./web   expose:    - "8000"   links:     - postgres:postgres       - redis:redis   volumes:     - /usr/src/app/static  env_file: .env  command: /usr/local/bin/gunicorn docker_django.wsgi:application -w 2 -b :8000 nginx:  restart: always  build: ./nginx/  ports:     - "80:80"   volumes:     - /www/static   volumes_from:     - web  links:     - web:web postgres:   restart: always  image: postgres:latest   volumes_from:     - data  ports:     - "5432:5432" redis:   restart: always  image: redis:latest   ports:     - "6379:6379" data:     restart: always   image: postgres:latest   volumes:     - /var/lib/postgresql  command: true

在这里,我们定义了五个服务: Web、Nginx、Postgres、Redis 和 Data。

  • Web 服务通过 「Web」 目录下的 Dockerfile 来进行构建,这里也设置了 Python 环境设置,Django 应用默认8000端口。这个端口之后转发到主机环境的80端口上–例如,Docker Machine。Web 服务还在容器 Restore.env 文件中增加了环境变量。

  • Nginx 服务用于反向代理,作用于 Django 或静态文件目录。

  • Postgres 服务是从 Docker Hub 的官方 Postgresql镜像 安装,安装 Postgres 后运行在默认的服务器的5432端口。

  • Redis 使用官方 Redis镜像 安装,默认 Redis 服务是运行在6379端口。

  • 最后,注意有一个单独的容器来存储数据库数据,即为 Data。这有助于确保即使 Postgres 容器完全摧毁数据仍然存在。

现在,运行容器,构建镜像,然后开始服务:

$ docker-compose build $ docker-compose up -d

这时可以有时间喝一杯咖啡或走走路,因为你第一次运行它将需要一段时间,随后就可以从 Docker 缓存中建立运行更快的了。

一旦服务运行,我们就需要创建数据库迁移:

$ docker-compose run web /usr/local/bin/python manage.py migrate

获得 Docker Machine 的相关 IP, – docker-machine ip –,然后在您的浏览器中输入IP:

怎么使用Docker组件开发Django项目

出现上图后刷新,您应该能看到页面更新。从本质上讲,我们使用 Redis INCR 来递增每个处理请求,查看 web/docker_django/apps/todo/views.py 代码以获得更多信息。

同样,这创造了五项服务,都在不同的容器中运行:

$ docker-compose ps            Name                          Command               State           Ports----------------------------------------------------------------------------------------------dockerizingdjango_data_1       /docker-entrypoint.sh true       Up      5432/tcpdockerizingdjango_nginx_1      /usr/sbin/nginx                  Up      0.0.0.0:80->80/tcpdockerizingdjango_postgres_1   /docker-entrypoint.sh postgres   Up      0.0.0.0:5432->5432/tcpdockerizingdjango_redis_1      /entrypoint.sh redis-server      Up      0.0.0.0:6379->6379/tcpdockerizingdjango_web_1        /usr/local/bin/gunicorn do ...   Up      8000/tcp

要查看哪些环境变量可用于 Web 服务,运行:

$ docker-compose run web env

要查看日志,运行:

$ docker-compose logs

您也可以进入 Postgres Shell - - 因为我们已经通过 docker-compose.yml 文件设置在数据库中通过添加用户/角色,端口转发到主机环境中:

$ psql -h 192.168.99.100 -p 5432 -U postgres --passWord

准备部署?先停止运行 docker-compose stop,然后让我们的应用程序在云中运行!

##部署

与我们在本地运行应用程序一样,我们现在可以 push 到与 Docker Machine 环境完全相同的云托管服务提供商。现在让我们部署到 Digital Ocean 中。

您注册 Digital Ocean 之后,产生个人访问令牌 「Personal Access Token」,然后运行以下命令:

$ docker-machine create \ -d digitalocean \ --digitalocean-access-token=ADD_YOUR_TOKEN_HERE \Production

这将需要几分钟时间来提供 droplet , 并设置一个新的 Docker Machine 产品环境:

INFO[0000] Creating SSH key... INFO[0001] Creating Digital Ocean droplet... INFO[0133] "production" has been created and is now the active machine. INFO[0133] To point your Docker client at it, run this in your shell: eval "$(docker-machine env production)"

现在我们有两台机器运行,一是在本地,一个在 Digital Ocean:

$ docker-machine lsNAME         ACTIVE   DRIVER         STATE     URLdev          *        virtualbox     Running   tcp://192.168.99.100:2376production            digitalocean   Running   tcp://104.131.107.8:2376

设置 production 为激活机器并加载 Docker 环境到 shell:

$ docker-machine active production $ eval "$(docker-machine env production)"

最后,让我们在云上再次构建 Django 的应用程序。这时候我们就需要使用一个稍微不同的 Docker Compose 文件,不需要安装在容器里。为什么呢?因为容器本身非常适合本地开发,这样我们可以更新「Web」目录的本地代码,并且更改代码立刻对容器产生影响。在生产中,很明显没有这个必要。

$ docker-compose build $ docker-compose up -d -f production.yml $ docker-compose run web /usr/local/bin/python manage.py migrate

获取与 Digital Ocean 帐户相关联的 IP 地址,并在浏览器中查看它。如果一切顺利,你应该可以看到你的应用程序在运行。

到此,相信大家对“怎么使用Docker组件开发Django项目”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 怎么使用Docker组件开发Django项目

本文链接: https://www.lsjlt.com/news/295438.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么使用Docker组件开发Django项目
    本篇内容主要讲解“怎么使用Docker组件开发Django项目”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Docker组件开发Django项目”吧!Docker 是一个开源的应用容器引...
    99+
    2023-06-19
  • .NET Core项目使用swagger开发组件
    首先我创建一个。net core项目,我使用的工具是vs2019 这里需要注意的是,看情况选择是否开启身份验证,一般是没有需求的,这里因为我是测试使用所以需要取消勾兑为https配...
    99+
    2022-11-13
  • Docker在PHP项目开发环境中怎么用
    这篇文章将为大家详细讲解有关Docker在PHP项目开发环境中怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。本篇文章给大家分享让人心动的Docker在PHP项目开发环境中的应用有一定的参考价值,有需...
    99+
    2023-06-15
  • 怎么用Docker搭建Laravel和Vue项目的开发环境
    本篇内容主要讲解“怎么用Docker搭建Laravel和Vue项目的开发环境”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Docker搭建Laravel和...
    99+
    2022-10-19
  • 怎么使用docker部署k8s项目
    要使用Docker部署Kubernetes项目,可以按照以下步骤进行操作:1. 安装Docker和Kubernetes:首先,确保已...
    99+
    2023-10-11
    docker k8s
  • 怎么使用docker部署react项目
    本教程操作环境:Windows10系统、react18.0.0版、Dell G3电脑。怎么使用docker部署react项目?手把手教你在docker部署react项目(docker中部署nginx)1、拉取nginx镜像docker pu...
    99+
    2023-05-14
    React Docker
  • Python怎么使用Web框架Flask开发项目
    本篇内容主要讲解“Python怎么使用Web框架Flask开发项目”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么使用Web框架Flask开发项目”吧!一、简介Flask是一个轻量...
    99+
    2023-07-06
  • Android项目开发常用工具类LightTaskUtils怎么使用
    这篇文章主要介绍“Android项目开发常用工具类LightTaskUtils怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android项目开发常用工具类LightTaskUtils怎么使...
    99+
    2023-06-30
  • 怎么用vue2.0+ElementUI框架开发pc项目
    本篇内容主要讲解“怎么用vue2.0+ElementUI框架开发pc项目”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用vue2.0+ElementUI框架...
    99+
    2022-10-19
  • vue中transition组件在项目中怎么用
    这篇文章给大家分享的是有关vue中transition组件在项目中怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。vue中的transtion是一个动画过渡封装组件,常见的情景时用transition标签包裹...
    99+
    2023-06-22
  • 在项目开发中怎么灵活使用css变量
    这篇文章主要讲解了“在项目开发中怎么灵活使用css变量”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“在项目开发中怎么灵活使用css变量”吧!在项目开发的过程...
    99+
    2022-10-19
  • 怎么使用Flex组件进行开发
    这篇文章主要介绍了怎么使用Flex组件进行开发,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使用Flex组件开发在Flex应用程序中ActionScript的最主要的用处大概...
    99+
    2023-06-17
  • Flutter Widget开发之Focus组件怎么使用
    本篇内容介绍了“Flutter Widget开发之Focus组件怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!正文就网络和...
    99+
    2023-07-04
  • 开发过程怎么使用Tomcat Maven插件持续快捷部署Web项目
    本篇内容介绍了“开发过程怎么使用Tomcat Maven插件持续快捷部署Web项目”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔...
    99+
    2022-10-19
  • Python中怎么使用Django框架开发
    今天就跟大家聊聊有关Python中怎么使用Django框架开发,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。建立Python Django开发框架,实现表单的有效性检验。可以方便的从...
    99+
    2023-06-17
  • 怎么使用Idea搭建全注解式开发的SpringMVC项目
    这篇“怎么使用Idea搭建全注解式开发的SpringMVC项目”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用Idea...
    99+
    2023-07-05
  • 利用Java怎么开发一个企业级项目
    今天就跟大家聊聊有关利用Java怎么开发一个企业级项目,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。什么是企业级项目开发  "企业级项目"、企业级项目开发,Jav...
    99+
    2023-05-31
    java ava
  • Android开发中Flutter组件怎么用
    这篇“Android开发中Flutter组件怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Android开发中Flut...
    99+
    2023-06-30
  • Android开发Jetpack组件WorkManager怎么用
    这篇文章主要介绍“Android开发Jetpack组件WorkManager怎么用”,在日常操作中,相信很多人在Android开发Jetpack组件WorkManager怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希...
    99+
    2023-06-29
  • Android开发Jetpack组件Room怎么用
    这篇文章主要讲解了“Android开发Jetpack组件Room怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android开发Jetpack组件Room怎么用”吧!一、简介Room ...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作