zoukankan      html  css  js  c++  java
  • Docker Compose practice

    Docker Compose

    • 什么是 Docker-Compose
      Compose 可以让用户在集群中部署分布式应用。简单的说,Docker Compose 属于一个“应用层”的服务,
      用户可以定义哪个容器组运行哪个应用,它支持动态改变应用,并在需要时扩展。

    • 使用Docker-Compose的过程
      首先,通过Dockerfile定义应用程序的环境,以便在任何地方方便重复使用;
      然后,通过docker-compose.yml描述应用的各种服务,以便于它们能在一个独立的环境中联合运行;
      最后,通过执行 docker-compose up便能执行整个应用。

    • Docker-Compose 在Django项目中的应用

      • 在Django项目的根目录下创建Dockerfile
      FROM python:2.7
      MAINTAINER Andy andy@xx.com
      ENV PYTHONUNBUFFERED 1
      RUN mkdir /tmscode
      WORKDIR /tmscode
      ADD requirements.txt /tmscode/
      RUN pip install -r requirements.txt
      ADD . /tmscode
      
      • 创建requirement.txt
      Django==1.9
      fabric
      MySQL-python
      
      • 在项目根目录中创建docker-compose.yml
      db:
          image: mysql
          environment:
              - MYSQL_ROOT_PASSWORD=passwd
              - MYSQL_USER=user
              - MYSQL_PASSWORD=passwd
              - MYSQL_DATABASE=testdb
      web:
          build: .
          command: python manage.py runserver 0.0.0.0:8667
          volumes:
              - .:/tmscode
          ports:
              - "8667:8667"
          links:
              - db
      
      • 修改setting
      DATABASES = {
      'default': {
          'ENGINE': 'django.db.backends.mysql',
              'NAME': 'tmsApp',
              'USER': 'tmsAdmin',
              'PASSWORD': 'bhu890-=',
              'HOST': 'db',
              'PORT': '3306',
          }
      }
      

      Notes: 如果没有设置HOST 和 PORT, 当应用容器连接数据库容器时候会连接到本地数据库,而出现类似“can not connect to local Mysql”错误

    • 常见命令

      • 查看镜像
      docker images
      
      • 查看运行容器并进入容器
      docker ps
      docker exec -it <container_name> bash
      
      • 将镜像打包成 tar 包
      docker save -o docker-tms-image.tar.gz tms_web
      
      • 从一个tar 包中加载镜像
      docker load -i docker-tms-image.tar.gz
      
    • 常见问题

      • error: docker error client's docker version don't match server's docker version while running docker-compose
        (client and server don't have same version)
        solution: remove the docker-compose, don't use "pip install -U docker-compose",
        use :
      curl -L http://github.com/docker/compose/releases/download/1.2.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-               compose
      chmod +x /usr/local/bin/docker-compose
      
      • error: pip version is 1.5.4, but need 8.0.0, use pip install --upgrade pip doesn't work
        solution: use get-pip.py
      python get-pip.py
      
      • 创建MySQL容器时,如有需要修改数据库的配置,例如修改字符集为utf8格式:
      MYSQL_CHARACTER_SET: Character set for MYSQL_DATABASE.
      MYSQL_COLLATE: Collate for MYSQL_DATABASE.
      GRANT_HOSTNAME: Hostname used on GRANT for MYSQL_DATABASE
      
    • 参考

  • 相关阅读:
    (四)资源文件分类
    (三)整合SSH测试项目
    (二)搭建SSH环境
    (一)新建一个javaweb项目
    Python学习——使用dict和set
    POJ 2104 K-th number
    bzoj 3669: [Noi2014] 魔法森林 LCT版
    bzoj 3626: [LNOI2014]LCA
    bzoj 2588 Count on a tree
    bzoj 3514: Codechef MARCH14 GERALD07加强版
  • 原文地址:https://www.cnblogs.com/zeweiwu/p/5158898.html
Copyright © 2011-2022 走看看