Linux.中国 - 开源社区

 找回密码
 骑士注册

QQ登录

微博登录


深入浅出Docker(五):基于Fig搭建开发环境

2014-12-30 10:31    评论: 1 收藏: 2 分享: 2    

4. Django开发环境配置详解

接下来让我们使用Fig来配置一套运行Django/PostgreSQL的应用程序吧。

首先我们新建一个项目目录,并在目录里创建3个文件。第一个文件是Docker镜像的定义文件: Dockerfile,用来描述安装在Docker容器里软件依赖关系。文件如下:

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

以上文件描述这个Image将安装requirements.txt指定的python依赖包。

第二个文件是requirements.txt,它是python依赖包定义描述文件,内容如下:

Django
psycopg2

最后,Fig需要把所有的环境都连接起来运行。这个文件名为 fig.yml 。它描述项目需要的服务组件、指定镜像的版本、如何连接服务、什么卷可以被载入容器内部、什么端口可以暴露出来等。内容形如:

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

到此处,我们就可以使用 fig run 来创建一个Django项目了:

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

当你运行完之后,可以在当前目录下看到创建的新项目文件:

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

接下来的事情就是创建数据库链接,修改 figexample/settings.py 的DATABASES = ...部分。

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

这个配置信息是用来连接postgres镜像服务。

然后,运行命令 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.

这个时候,你可以开启浏览器,然后输入 localhost:8000 就可以访问这个Django应用。

注意,当你跑起来应用之后,就可以初始化数据库了。这里,请一定要保证fig up是在运行中,并另外开启一个命令行窗口执行一下命令:

$ fig run web python manage.py syncdb

如果你反复使用了fig up之后,可以体会到它一次性会把web和db两个镜像一起启动,如果你CONTROL-C之后,数据库也会停止服务。你甚至可以fig run web /bin/bash的方式直接进入到容器里看看。

查看其它分页:

发表评论


返回顶部

分享到微信朋友圈

打开微信,点击底部的“发现”,
使用“扫一扫”将网页分享至朋友圈。