国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

forsigner / 1699人閱讀

摘要:按照指示,分別安裝和,然后測試安裝結果接下來,根據以下項目結構從克隆一份項目或自己創建項目現在我們準備容器運行開啟,只需運行這個命令設置一個新的開發環境。

  

原文地址:Django Development With Docker Compose and Machine

以下為譯文


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

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

Docker Machine

開啟 Docker Machine,只需運行:

$ docker-machine create -d virtualbox dev;
INFO[0000] Creating CA: /Users/michael/.docker/machine/certs/ca.pem
INFO[0000] Creating client certificate: /Users/michael/.docker/machine/certs/cert.pem
INFO[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:

出現上圖后刷新,您應該能看到頁面更新。從本質上講,我們使用 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/tcp
dockerizingdjango_nginx_1      /usr/sbin/nginx                  Up      0.0.0.0:80->80/tcp
dockerizingdjango_postgres_1   /docker-entrypoint.sh postgres   Up      0.0.0.0:5432->5432/tcp
dockerizingdjango_redis_1      /entrypoint.sh redis-server      Up      0.0.0.0:6379->6379/tcp
dockerizingdjango_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 ls
NAME         ACTIVE   DRIVER         STATE     URL
dev          *        virtualbox     Running   tcp://192.168.99.100:2376
production            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 地址,并在瀏覽器中查看它。如果一切順利,你應該可以看到你的應用程序在運行。

原文地址:Django Development With Docker Compose and Machine

本文系 OneAPM 工程師編譯整理。想閱讀更多技術文章,請訪問 OneAPM 官方博客。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26442.html

相關文章

  • django開發-在Docker中部署django項目

    摘要:今天整理了一下如何在中部署項目。執行可以查看容器出錯的具體原因。若上述容器都成功運行,則在瀏覽器中輸入時,視圖會返回相應的結果。以交互方式進入容器后,進入數據庫,會看到在數據庫中生成了相應的表。 今天整理了一下如何在docker中部署django項目。 1.環境如下: python3.6 django2.0.5 nginx mysql5.7 gunicorn 2.項目結構如下:...

    galois 評論0 收藏0
  • django開發-在Docker中部署django項目

    摘要:今天整理了一下如何在中部署項目。執行可以查看容器出錯的具體原因。若上述容器都成功運行,則在瀏覽器中輸入時,視圖會返回相應的結果。以交互方式進入容器后,進入數據庫,會看到在數據庫中生成了相應的表。 今天整理了一下如何在docker中部署django項目。 1.環境如下: python3.6 django2.0.5 nginx mysql5.7 gunicorn 2.項目結構如下:...

    MonoLog 評論0 收藏0
  • [原]打造數據產品的快速原型:DjangoDocker之旅

    摘要:而大多數數據科學研究的場景下,更快的速度也意味著更早地發現問題和完成檢驗假設的閉環。通常,數據科學被認為研究成果立即應用到生產環境都是比較緩慢的一個過程。 showImg(https://segmentfault.com/img/remote/1460000005771293); 概述 在數據科學研究中,快速驗證想法是非常關鍵的一環,而如何快速開發出數據產品則可以有效推動整個數據科學項...

    zhoutao 評論0 收藏0
  • [原]打造數據產品的快速原型:DjangoDocker之旅

    摘要:而大多數數據科學研究的場景下,更快的速度也意味著更早地發現問題和完成檢驗假設的閉環。通常,數據科學被認為研究成果立即應用到生產環境都是比較緩慢的一個過程。 showImg(https://segmentfault.com/img/remote/1460000005771293); 概述 在數據科學研究中,快速驗證想法是非常關鍵的一環,而如何快速開發出數據產品則可以有效推動整個數據科學項...

    zhangqh 評論0 收藏0
  • Mac Docker 創建第一個Django 應用,Part 1

    摘要:創建第一個應用,第一步在構建容器原文翻譯整理這篇文章將指導你如何用配置和啟動一個簡單的應用。一詞我認為翻譯為編制更恰當。在這里我們需要一個服務器,一個數據服務器。編制文件指明了我們這些服務所用的鏡像,他們如何連接,哪些卷要掛載到容器。 Mac Docker 創建第一個Django 應用, Part 1 第一步:在Mac構建Django 容器 原文:Quickstart: Compose...

    sydMobile 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<