欢迎您, 来到 宁时修博客.^_^

Docker系列13--Docker Compose(下)官方示例

2018/11/20 林木立 Docker 575
Docker容器技术

示例一、使用Django

    官方地址:https://docs.docker.com/compose/django/

    使用  Docker Compose  配置并运行一个  Django/MYSQL  应用。


    需要先编辑好三个必要的文件

    1)应用将运行在一个满足所有环境依赖的 Docker 容器里面,新建项目目录,编辑 Dockerfile 文件指定 Docker 容器要安装的内容。

FROM python:3.6
ENV PYTHONUNBUFFERED 1
RUN mkdir /code \
    && mkdir /data
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/

    指定应用将使用安装了 Python 以及必要依赖包的镜像。


    2)在 requirements.txt文件写明需要安装的依赖包名

Django==1.10.8
mysqlclient

    MySQL-python不支持python3版本,使用mysqlclient软件包作为MySQL-python的代替,它是MySQL-python支持Python 3 的分支。



    3)写docker-compose.yml  将把所有的东西关联起来。它描述了应用的构成(一个 web 服务和一个数据库)、使用的 Docker 镜像、镜像之间的连接、挂载到容器的卷,以及服务开放的端口。

version: "3"

services:
  db:
    image: mysql:5.6
    expose:
      - "3306"
    volumes:
      - /data:/var/lib/mysql
    environment:
      - MYSQL_DATABASE=testdb
      - MYSQL_ROOT_PASSWORD=12345678

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


    创建项目和app:

docker-compose run web django-admin.py startproject website .

    Compose 会先使用  Dockerfile  为 web 服务创建一个镜像,接着使用这个镜像在容器里运行  django-admin.py startproject website . 指令。


    在当前目录生成一个  Django  应用:

$ ll
total 16
-rw-r--r--. 1 root root 361 Nov 20 17:19 docker-compose.yml
-rw-r--r--. 1 root root 169 Nov 20 17:15 Dockerfile
-rwxr-xr-x. 1 root root 805 Nov 20 17:47 manage.py
-rw-r--r--. 1 root root  25 Nov 20 17:10 requirements.txt
drwxr-xr-x. 2 root root  74 Nov 20 17:47 website


    修改website/settings.py 数据库配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'testdb',
        'USER': 'root',
        'PASSWORD': '12345678',
        'HOST': 'db',
        'PORT': '3306',
    }
}

ALLOWED_HOSTS = ['192.168.184.36']

    在项目根目录执行docker-compose up启动容器。或者放到后台运行 docker-compose up -d。

    这个  Django  应用已经开始在你的 Docker 守护进程里监听着  8000  端口了。打开 宿主机:8000  即可看到  Django  欢迎页面。


    为什么配置 ALLOWED_HOSTS?ALLOWED_HOSTS是为了限定请求中的host值,以防止黑客构造包来发送请求。只有在列表中的host才能访问,不然报错。

125.png


    

    还可以在 Docker 上运行其它的管理命令,例如对于同步数据库结构这种事,在运行完  docker-compose up  后,在另外一个终端进入文件夹运行以下命令即可:

docker-compose run web python manage.py syncdb



示例二:使用WordPress

    官方地址:https://docs.docker.com/compose/wordpress/

    Compose  很便捷的让  Wordpress  运行在一个独立的环境中。

    新建个名为wordpress的目录,然后在这个目录中写docker-compose.yml文件。

version: "3"
services:

  db:
    image: mysql:5.7
    volumes:
      - data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 12345678
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress

  wordpresss:
    depends_on:
      - db
    image: wordpress
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress

volumes:
  data:


    运行  docker-compose up -d, Compose 就会拉取镜像,再创建所需要的镜像,然后启动  wordpress  和数据库容器。接着浏览器访问 主机:8000 端口就能看到 WordPress  安装界面了。


点赞
说说你的看法

所有评论: (0)

# 加入组织

1、用手机QQ扫左侧二维码

2、搜Q群:1058582137

3、点击 宁时修博客交流群