鍍金池/ 教程/ Linux/ 實(shí)戰(zhàn) Django
利用數(shù)據(jù)卷容器來備份、恢復(fù)、遷移數(shù)據(jù)卷
Docker 網(wǎng)絡(luò)實(shí)現(xiàn)
實(shí)戰(zhàn) Django
YAML 模板文件
名字空間
控制組
編輯網(wǎng)絡(luò)配置文件
列出
進(jìn)入容器
Compose 命令說明
創(chuàng)建 Tomcat/Weblogic 集群
守護(hù)態(tài)運(yùn)行
快速配置指南
其它安全特性
示例:創(chuàng)建一個(gè)點(diǎn)到點(diǎn)連接
CentOS 系列安裝 Docker
數(shù)據(jù)卷容器
鏡像
指令
創(chuàng)建鏡像
Docker 容器
創(chuàng)建鏡像
常用倉庫
總結(jié)
什么是 Docker
存出和載入鏡像
使用
獲取鏡像
容器互聯(lián)
為什么要使用 Docker?
使用 Wordpress 入門 Fig
啟動(dòng)
容器訪問控制
私有倉庫
使用
基本架構(gòu)
自定義網(wǎng)橋
環(huán)境變量參考
實(shí)戰(zhàn) Rail
服務(wù)端的防護(hù)
刪除
鏡像的實(shí)現(xiàn)原理
多臺(tái)物理主機(jī)之間的容器互聯(lián)
Docker 倉庫
簡介
數(shù)據(jù)卷
命令參考
使用 Supervisor 來管理進(jìn)程
移除
基本結(jié)構(gòu)
命令查詢
終止容器
聯(lián)合文件系統(tǒng)
安裝
簡介
配置 DNS
內(nèi)核能力機(jī)制
導(dǎo)出和導(dǎo)入容器
配置 docker0 網(wǎng)橋
倉庫配置文件
內(nèi)核名字空間
標(biāo)準(zhǔn)化開發(fā)測(cè)試和生產(chǎn)環(huán)境
外部訪問容器
fig.yml 參考
Ubuntu 系列安裝 Docker
有用資源
安裝
端口映射實(shí)現(xiàn)
安裝 Fig
工具和示例
簡介
控制組
容器格式
Docker Hub

實(shí)戰(zhàn) Django

我們現(xiàn)在將使用 Fig 配置并運(yùn)行一個(gè) Django/PostgreSQL 應(yīng)用。在此之前,先確保 Fig 已經(jīng) 安裝。

在一切工作開始前,需要先設(shè)置好三個(gè)必要的文件。
第一步,因?yàn)閼?yīng)用將要運(yùn)行在一個(gè)滿足所有環(huán)境依賴的 Docker 容器里面,那么我們可以通過編輯 Dockerfile 文件來指定 Docker 容器要安裝內(nèi)容。內(nèi)容如下:

FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/

以上內(nèi)容指定應(yīng)用將使用安裝了 Python 以及必要依賴包的鏡像。更多關(guān)于如何編寫 Dockerfile 文件的信息可以查看鏡像創(chuàng)建和 Dockerfile。

第二步,在 requirements.txt 文件里面寫明需要安裝的具體依賴包名 。

Django
psycopg2

就是這么簡單。
第三步,fig.yml 文件將把所有的東西關(guān)聯(lián)起來。它描述了應(yīng)用的構(gòu)成(一個(gè) web 服務(wù)和一個(gè)數(shù)據(jù)庫)、使用的 Docker 鏡像、鏡像之間的連接、掛載到容器的卷,以及服務(wù)開放的端口。

db:
  image: postgres
web:
  build: .
  command: python manage.py runserver 0.0.0.0:8000
  volumes:
    - .:/code
  ports:
    - "8000:8000"
  links:
    - db

查看 fig.yml 章節(jié) 了解更多詳細(xì)的工作機(jī)制。

現(xiàn)在我們就可以使用 fig run 命令啟動(dòng)一個(gè) Django 應(yīng)用了。

$ fig run web django-admin.py startproject figexample .

Fig 會(huì)先使用 Dockerfile 為 web 服務(wù)創(chuàng)建一個(gè)鏡像,接著使用這個(gè)鏡像在容器里運(yùn)行 django-admin.py startproject figexample . 指令。

這將在當(dāng)前目錄生成一個(gè) Django 應(yīng)用。

$ ls
Dockerfile       fig.yml          figexample       manage.py       requirements.txt

首先,我們要為應(yīng)用設(shè)置好數(shù)據(jù)庫的連接信息。用以下內(nèi)容替換 figexample/settings.py 文件中 DATABASES = ... 定義的節(jié)點(diǎn)內(nèi)容。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'postgres',
        'USER': 'postgres',
        'HOST': 'db',
        'PORT': 5432,
    }
}

這些信息是在 postgres Docker 鏡像固定設(shè)置好的。
然后,運(yùn)行 fig up

Recreating myapp_db_1...
Recreating myapp_web_1...
Attaching to myapp_db_1, myapp_web_1
myapp_db_1 |
myapp_db_1 | PostgreSQL stand-alone backend 9.1.11
myapp_db_1 | 2014-01-27 12:17:03 UTC LOG:  database system is ready to accept connections
myapp_db_1 | 2014-01-27 12:17:03 UTC LOG:  autovacuum launcher started
myapp_web_1 | Validating models...
myapp_web_1 |
myapp_web_1 | 0 errors found
myapp_web_1 | January 27, 2014 - 12:12:40
myapp_web_1 | Django version 1.6.1, using settings 'figexample.settings'
myapp_web_1 | Starting development server at http://0.0.0.0:8000/
myapp_web_1 | Quit the server with CONTROL-C.

這個(gè) web 應(yīng)用已經(jīng)開始在你的 docker 守護(hù)進(jìn)程里監(jiān)聽著 5000 端口了(如果你有使用 boot2docker ,執(zhí)行 boot2docker ip ,就會(huì)看到它的地址)。

你還可以在 Docker 上運(yùn)行其它的管理命令,例如對(duì)于同步數(shù)據(jù)庫結(jié)構(gòu)這種事,在運(yùn)行完 fig up 后,在另外一個(gè)終端運(yùn)行以下命令即可:

$ fig run web python manage.py syncdb