W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
我們現(xiàn)在將使用 Fig 配置并運(yùn)行一個(gè) Django/PostgreSQL 應(yīng)用。在此之前,先確保 Fig 已經(jīng) 安裝。
在一切工作開(kāi)始前,需要先設(shè)置好三個(gè)必要的文件。
第一步,因?yàn)閼?yīng)用將要運(yùn)行在一個(gè)滿足所有環(huán)境依賴的 Docker 容器里面,那么我們可以通過(guò)編輯 Dockerfile
文件來(lái)指定 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
就是這么簡(jiǎn)單。
第三步,fig.yml
文件將把所有的東西關(guān)聯(lián)起來(lái)。它描述了應(yīng)用的構(gòu)成(一個(gè) web 服務(wù)和一個(gè)數(shù)據(jù)庫(kù))、使用的 Docker 鏡像、鏡像之間的連接、掛載到容器的卷,以及服務(wù)開(kāi)放的端口。
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ù)庫(kù)的連接信息。用以下內(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)開(kāi)始在你的 docker 守護(hù)進(jìn)程里監(jiān)聽(tīng)著 5000 端口了(如果你有使用 boot2docker ,執(zhí)行 boot2docker ip
,就會(huì)看到它的地址)。
你還可以在 Docker 上運(yùn)行其它的管理命令,例如對(duì)于同步數(shù)據(jù)庫(kù)結(jié)構(gòu)這種事,在運(yùn)行完 fig up
后,在另外一個(gè)終端運(yùn)行以下命令即可:
$ fig run web python manage.py syncdb
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: