Simple Life

和这个世界交手这许多年   你是否光彩依旧,兴致盎然...

您现在的位置是:首页 爱折腾 爱折腾详情

Docker搭建Django MySQL开发环境

发布时间:2016-2-04 作者:Felix 浏览(3825)

    Docker 是一种容器技术,它可以将应用和环境等进行打包,形成一个独立的,类似于APP 形式的应用,这个应用可以直接被分发到任意一个支持 Docker 的环境中,通过简单的命令即可启动运行。Docker 是一种最流行的容器化实现方案。和虚拟化技术类似,它极大的方便了应用服务的部署;又与虚拟化技术不同,它以一种更轻量的方式实现了应用服务的打包。使用 Docker 可以让每个应用彼此相互隔离,在同一台机器上同时运行多个应用,不过他们彼此之间共享同一个操作系统。Docker 的优势在于,它可以在更细的粒度上进行资源的管理,也比虚拟化技术更加节约资源。

    使用docker来搭建开发环境不仅能够跟我们主机的已有的各种软件配置隔离,而且也能够很方便地分发给别人,从而使团队能够在统一的开发环境下快速开始开发、测试和部署。本文采用Docker的docker-compose来搭建python2.7+django+mysql的web开发环境,希望可以给需要的同学参考。

    1.创建工程目录

 bash-3.2$ mkdir djangodocker
 bash-3.2$ cd djangodocker/

    2.创建Dockerfile

        Dockerfile包含创建镜像所需要的全部指令。在项目根目录下创建Dockerfile文件,其内容如下:

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

        a.FROM指令表示新的镜像将基于python:2.7的镜像来构建 

        b.设置镜像作者

        c.ENV为环境变量(PYTHONUNBUFFERED见这里) 

        d.RUN指令表示在镜像内新建/code目录 

        e.指定指定RUN、CMD与ENTRYPOINT命令的工作目录 

        f.将requirements.txt文件添加到刚才新建的code目录中 

        g.运行pip安装所需的软件

    3.创建requirements.txt

 Django
 mysql-python
 pillow==2.8.1

    4.创建docker-compose.yml

version: '2'
services:
  db:
    image: mysql
    environment:
      - MYSQL_DATABASE=phase
      - MYSQL_ROOT_PASSWORD=123456
    ports:
      - "3306:3306"
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

    db: 
        image表示使用mysql镜像 

        envrionment中MYSQL_DATABASE设置数据库,MYSQL_ROOT_PASSWORD设置数据库密码
        ports设置端口3306 

    web: 

        build指定建立Dockerfile路径 
        command将覆盖默认的命令 

        volume表示挂载宿主机的路径作为卷,冒号左边为宿主机路径,右边为镜像内路径 

        ports指定主机开放的端口 
        depends_on指向其他容器中的服务

        

    5.创建镜像

 bash-3.2$ docker-compose build

        截图就不发了,如果本地没有python和mysql镜像的话下载需要多等待一些时间。

        完成之后就构建好了python+django+mysql的镜像。

    6. 创建django项目

 bash-3.2$ docker-compose run web django-admin.py startproject djangodocker .
 bash-3.2$ ls -rlt    # 工作路径下目录结构
 total 32
 -rw-r--r--  1 felix  staff  163  3  5 14:04 Dockerfile
 -rw-r--r--  1 felix  staff   35  3  5 14:05 requirements.txt
 -rw-r--r--  1 felix  staff  318  3  5 14:09 docker-compose.yml
 -rwxr-xr-x  1 felix  staff  255  3  5 14:14 manage.py
 drwxr-xr-x  6 felix  staff  204  3  5 14:14 djangodocker

     7.修改setting中mysql连接

bash-3.2$ vi djangodocker/settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'phase',
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': '192.168.99.100',  # mac系统中docker-machine地址
        'PORT': 3306,
    }
}

    8.运行

docker-compose up

    可以看到终端中正启动镜像

    9.浏览器中输入http://127.0.0.1:8000/ 

        如果一切正常会看到django默认页面

        djangodocker.png



基于 Django 搭建

服务器采用的 阿里云

域名来自 万网

苏ICP备16015443号

©2015-2016 felixglow.com.

GitHub

Design by Felix