成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何使用Docker組件開發Django項目?

開源 系統運維
Docker是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的Linux機器上,也可以實現虛擬化。本篇文章詳細介紹了如何通過Docker Machine「系統配置」和Docker Compose「多容器應用組裝」提供堆棧完成Postgres, Redis和Django項目相結合的開發。
目錄[-]
  • 本地設置
  • Docker Machine
  • Docker Compose
  • 部署

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。自2013年發布以來,無論是從 Github 上的代碼活躍度,還是 Redhat 在 RHEL6.5 中集成對 Docker 的支持,就連 Google 的 Compute Engine 也支持 Docker 在其之上運行。火熱程度可見一斑!

[[140734]]

本篇文章詳細介紹了如何通過 Docker Machine 「系統配置」和 Docker Compose 「多容器應用組裝」 提供堆棧完成 Postgres, Redis 和 Django 項目相結合的開發。

而在***,該堆棧將包括如下每個服務的單獨的容器:

  • 一個 Web/ Django 的容器
  • 一個 Nginx 的容器
  • 一個 Postgres 的容器
  • 一個 Redis 的容器
  • 一個 Data 容器

用Docker組件開發Django項目

 

本地設置

使用 Docker「v1.6.1」版本我們將使用到 Docker Compose 「v1.2.0」編排一個多容器組成的應用程序,使用 Docker Machine「v0.2.0」創建本地和云的 Docker 主機。 按照指示,分別安裝 Docker Compose 和 Machine,然后測試安裝結果:

  1. $ docker-machine --version  
  2. docker-machine version 0.2.0 (8b9eaf2)  
  3. $ docker-compose --version  
  4. docker-compose 1.2.0 

接下來,根據以下項目結構從realpython/dockerizing-django克隆一份項目或自己創建項目:

  1. ├── docker-compose.yml  
  2. ├── nginx  
  3. │   ├── Dockerfile  
  4. │   └── sites-enabled  
  5. │   └── django_project  
  6. ├── production.yml  
  7. └── web  
  8. │   ├── Dockerfile  
  9. │   ├── docker_django  
  10. │   │   ├── __init__.py  
  11. │   │   ├── apps  
  12. │   │   │   ├── __init__.py  
  13. │   │   │   └── todo  
  14. │   │   │   ├── __init__.py  
  15. │   │   │   ├── admin.py  
  16. │   │   │   ├── models.py  
  17. │   │   │   ├── templates  
  18. │   │   │   │   ├── _base.html  
  19. │   │   │   │   └── home.html  
  20. │   │   │   ├── tests.py  
  21. │   │   │   ├── urls.py  
  22. │   │   │   └── views.py  
  23. │   │   ├── settings.py  
  24. │   │   ├── urls.py  
  25. │   └── wsgi.py  
  26. │   ├── manage.py  
  27. │   ├── requirements.txt  
  28. │   └── static  
  29. │   │   └── main.css</code> 

現在我們準備容器運行……

#p#

Docker Machine

開啟 Docker Machine,只需運行:

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

這個 create 命令設置一個新的 Machine「開發環境」。實際上,它是下載 Boot2Docker 并開始運行 VM。現在只要在開發環境下指定 Docker:

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

運行以下命令來查看當前正在運行的機器:

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

接下來,我們會讓 Django,Postgres 和 Redis 的容器運行起來。

Docker Compose

讓我們看一看 docker-compose.yml 文件:

  1. web:  
  2.   restart: always  
  3.   build: ./web  
  4.   expose: 
  5.     - "8000"  
  6.   links:  
  7.     - postgres:postgres    
  8.     - redis:redis  
  9.   volumes:  
  10.     - /usr/src/app/static 
  11.   env_file: .env 
  12.   command: /usr/local/bin/gunicorn docker_django.wsgi:application -w 2 -b :8000  
  13.  
  14. nginx: 
  15.   restart: always 
  16.   build: ./nginx/ 
  17.   ports:  
  18.     - "80:80"  
  19.   volumes:  
  20.     - /www/static  
  21.   volumes_from:  
  22.     - web 
  23.   links:  
  24.     - web:web  
  25.  
  26. postgres:  
  27.   restart: always 
  28.   image: postgres:latest  
  29.   volumes_from:  
  30.     - data 
  31.   ports:  
  32.     - "5432:5432"  
  33.  
  34. redis:  
  35.   restart: always 
  36.   image: redis:latest  
  37.   ports:  
  38.     - "6379:6379"  
  39.  
  40. data:    
  41.   restart: always  
  42.   image: postgres:latest  
  43.   volumes:  
  44.     - /var/lib/postgresql 
  45.   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 容器完全摧毀數據仍然存在。

現在,運行容器,構建鏡像,然后開始服務:

  1. $ docker-compose build  
  2. $ docker-compose up -d 

這時可以有時間喝一杯咖啡或走走路,因為你***次運行它將需要一段時間,隨后就可以從 Docker 緩存中建立運行更快的了。

一旦服務運行,我們就需要創建數據庫遷移:

  1. $ 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 代碼以獲得更多信息。

#p#

同樣,這創造了五項服務,都在不同的容器中運行:

  1. $ docker-compose ps 
  2.             Name                          Command               State           Ports 
  3. ---------------------------------------------------------------------------------------------- 
  4. dockerizingdjango_data_1       /docker-entrypoint.sh true       Up      5432/tcp 
  5. dockerizingdjango_nginx_1      /usr/sbin/nginx                  Up      0.0.0.0:80->80/tcp 
  6. dockerizingdjango_postgres_1   /docker-entrypoint.sh postgres   Up      0.0.0.0:5432->5432/tcp 
  7. dockerizingdjango_redis_1      /entrypoint.sh redis-server      Up      0.0.0.0:6379->6379/tcp 
  8. dockerizingdjango_web_1        /usr/local/bin/gunicorn do ...   Up      8000/tcp 

要查看哪些環境變量可用于 Web 服務,運行:

  1. $ docker-compose run web env 

要查看日志,運行:

  1. $ docker-compose logs 

您也可以進入 Postgres Shell - - 因為我們已經通過 docker-compose.yml 文件設置在數據庫中通過添加用戶/角色,端口轉發到主機環境中:

  1. $ psql -h 192.168.99.100 -p 5432 -U postgres --password 

準備部署?先停止運行 docker-compose stop,然后讓我們的應用程序在云中運行!

部署

與我們在本地運行應用程序一樣,我們現在可以 push 到與 Docker Machine 環境完全相同的云托管服務提供商。現在讓我們部署到 Digital Ocean 中。

您注冊 Digital Ocean 之后,產生個人訪問令牌 「Personal Access Token」,然后運行以下命令:

  1. $ docker-machine create \  
  2. -d digitalocean \  
  3. --digitalocean-access-token=ADD_YOUR_TOKEN_HERE \ 
  4. Production 

這將需要幾分鐘時間來提供 droplet , 并設置一個新的 Docker Machine 產品環境:

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

現在我們有兩臺機器運行,一是在本地,一個在 Digital Ocean:

  1. $ docker-machine ls 
  2. NAME         ACTIVE   DRIVER         STATE     URL 
  3. dev          *        virtualbox     Running   tcp://192.168.99.100:2376 
  4. production            digitalocean   Running   tcp://104.131.107.8:2376 

設置 production 為激活機器并加載 Docker 環境到 shell:

  1. $ docker-machine active production  
  2. $ eval "$(docker-machine env production)" 

***,讓我們在云上再次構建 Django 的應用程序。這時候我們就需要使用一個稍微不同的 Docker Compose 文件,不需要安裝在容器里。為什么呢?因為容器本身非常適合本地開發,這樣我們可以更新「Web」目錄的本地代碼,并且更改代碼立刻對容器產生影響。在生產中,很明顯沒有這個必要。

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

獲取與 Digital Ocean 帳戶相關聯的 IP 地址,并在瀏覽器中查看它。如果一切順利,你應該可以看到你的應用程序在運行。

責任編輯:火鳳凰 來源: OneAPM
相關推薦

2014-12-25 10:15:37

DockerJava

2010-07-30 13:52:17

Flex組件

2016-09-19 21:37:58

vue特效組件Web

2017-04-18 10:36:19

權限框架組件Django

2021-06-09 09:36:18

DjangoElasticSearLinux

2010-08-12 13:39:46

Flex組件

2018-09-13 08:49:08

DockerPythonDjango

2021-03-11 16:34:57

css前端CSS 特效

2025-04-02 10:06:00

2020-11-30 11:55:07

Docker命令Linux

2020-12-02 09:54:26

Django

2009-06-10 16:19:33

Eclipse開發PH

2023-09-21 22:43:17

Django框架

2014-08-25 12:14:02

Docker協助開發

2009-11-23 19:48:50

ibmdwJava

2011-01-19 10:45:34

信息系統項目管理師

2014-08-07 10:25:15

DockerPython

2021-01-19 09:06:21

MysqlDjango數據庫

2019-07-01 09:33:58

DockerNginx操作系統

2013-01-17 16:17:33

Android開發Intent組件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 暖暖成人免费视频 | 婷婷综合| 91久久久久久 | 免费视频一区二区 | 一区二区三区国产精品 | 91p在线观看 | 精品自拍视频 | 91麻豆精品国产91久久久久久久久 | 欧美视频成人 | 97热在线| 亚洲伊人久久综合 | 成人二区| 成人三级视频 | 免费观看av| 久久国产精品精品国产色婷婷 | 九九伦理电影 | 成人精品一区二区三区四区 | 国产精品视频在线观看 | 免费在线播放黄色 | va在线 | 精产国产伦理一二三区 | 免费一区 | 日韩在线不卡 | 亚洲国产一区二区三区 | 国产成人一区二区三区电影 | 视频第一区 | 久久久爽爽爽美女图片 | 亚洲欧美日韩在线一区二区 | 在线精品一区 | 亚洲视频在线看 | 午夜精品91 | 欧美区在线 | 亚洲精品欧美 | 中文字幕在线观看一区 | 先锋资源在线 | 999国产精品视频免费 | 日韩高清一区二区 | 91超碰caoporn97人人 | 成人在线观看亚洲 | 久草在线青青草 | 免费网站国产 |