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

2021-09-14 15:47 更新

使用 Django 入門 Fig

我們現(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
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)