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
  • 参考

最新文章

  1. Burp Suite使用详解一
  2. JDBC的连接和操作
  3. 第21/24周 性能监控(PAL工具)
  4. 使用T-SQL进行活动目录查询
  5. iperf3实践
  6. 实战案例:DIV嵌套
  7. Linux网络统计工具/命令
  8. MyBatis学习总结_18_MyBatis与Hibernate区别
  9. android智能天气闹钟应用开发经过
  10. JavaScript进阶(三) 值传递和引用传递
  11. java文件上传--基于ajaxFileUpload+struts2
  12. myeclipse8.6安装svn插件
  13. 决策树和基于决策树的集成方法(DT,RF,GBDT,XGB)复习总结
  14. 用CSS的border画三角形
  15. [Luogu 2062]分队问题
  16. Disruptor-架构思维的转变
  17. NEO智能合约开发(一)不可能完成的任务
  18. AJ的笔记之上拉电阻的工作原理分析
  19. LeetCode--No.012 Integer to Roman
  20. 提高Mxd地图渲染出图效率的方法

热门文章

  1. 【刷题】BZOJ 1969 [Ahoi2005]LANE 航线规划
  2. Linux相关——记录gdb基本操作(持续更新)
  3. 使用IDEA远程部署tomcat和调试
  4. 【agc006f】Blackout(神仙题)
  5. Android 资源目录 相关知识 raw、 drawable、 values..
  6. 解题:POI 2007 Driving Exam
  7. 牛客网NOIP赛前集训营-普及组(第二场)
  8. 简短的创建Ajax对象代码
  9. Redis学习基础二
  10. javascript实现div的显示和隐藏