Docker - 入门DockerCompose与Django

本文说明如何使用docker-compose运行一个简单的Django/PostgreSQL应用。在这之前,记得先安装好docker和docker-compose

参考链接 https://docs.docker.com/compose/django/

定义工程的镜像

首先,先列出三个重要的会使用到的文件

  • Dockerfile
  • Python依赖文件
  • docker-compose.yml文件

接下来,我们从工程创建一步步开始

  1. 创建一个空文件夹
    即工程的文件夹,会包含工程的代码,以及以上三个列出的文件
  2. 创建一个Dockerfile文件
    Dockerfile定义了该应用的镜像。一但build完成之后,可以在容器里运行起来该镜像。关于更多的Dockerfile的信息,可以查看Dockerfile reference
  3. 添加以下信息到Dockerfile
    添加的配置如下
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/

该镜像的基础是Python 3的镜像,通过把requirements.txt文件添加进去,原始Python 3的镜像修改就是增加了新的Python依赖

  1. 保存并关闭Dockerfile

  2. 在工程目录下创建一个requirements.txt文件
    该文件会在Dockerfile中用到,就是命令RUN pip install -r requirements.txt

  3. 添加下列依赖到文件里面去

Django>=2.0,<3.0
psycopg2>=2.7,<3.0
  1. 保存并退出requirements.txt文件
  2. 创建docker-compose.yml文件
    docker-compose.yml文件描述了组成应用的所需服务。在我们的这个例子里面,需要的服务是一个web server和一个database。compose文件定义的内容包括:(1)服务使用了哪些镜像(2)服务之间如何关联(3)挂载了哪些目录(4)暴露了哪些端口。如果需要更多关于docker-compose.yml文件的信息,可以查看docker-compose Reference
    内容可定义如下:
  version: '3'
    
  services:
    db:
      image: postgres
      environment:
        - POSTGRES_DB=postgres
        - POSTGRES_USER=postgres
        - POSTGRES_PASSWORD=postgres
    web:
      build: .
      command: python manage.py runserver 0.0.0.0:8000
      volumes:
        - .:/code
      ports:
        - "8000:8000"
      depends_on:
        - db
  1. 保存并退出docker-compose.yml

  2. 创建一个Django项目
    以下省略…

  3. Django项目连接数据库
    修改settings.py文件,其中数据库配置如下

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

这些配置项都在docker-compose.yml中已配置。

  1. 在根目录运行命令docker-compose up
$ docker-compose up
djangosample_db_1 is up-to-date
Creating djangosample_web_1 ...
Creating djangosample_web_1 ... done
Attaching to djangosample_db_1, djangosample_web_1
db_1   | The files belonging to this database system will be owned by user "postgres".
db_1   | This user must also own the server process.
db_1   |
db_1   | The database cluster will be initialized with locale "en_US.utf8".
db_1   | The default database encoding has accordingly been set to "UTF8".
db_1   | The default text search configuration will be set to "english".

. . .

web_1  | May 30, 2017 - 21:44:49
web_1  | Django version 1.11.1, using settings 'composeexample.settings'
web_1  | Starting development server at http://0.0.0.0:8000/
web_1  | Quit the server with CONTROL-C.

然后你就可以通过http://localhost:8000访问了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值