我尝试使用Docker Compose入门

这是关于尝试使用Docker Compose来轻松管理多个容器的笔记。

环境

苹果操作系统

准备之前的工作

安装

# Homebrew Cask をインストールする
$ brew install caskroom/cask/brew-cask

# VirtualBox をインストールする
$ brew cask install virtualbox

# Docker, Docker Machine, Docker Compose をインストールする
$ brew install docker docker-machine docker-compose

创建Docker主机

创建

$ docker-machine create -d virtualbox default

确认 (què

$ docker-machine ls
NAME        ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS
default     -        virtualbox   Running   tcp://192.168.99.100:2376           v1.11.2

确认环境变量

$ docker-machine env default
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/a12499/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# Run this command to configure your shell:
# eval $(docker-machine env default)

设置环境变量

$ eval $(docker-machine env default)

安装/设置

创建项目目录

$ mkdir composetest
$ cd composetest

创建测试程序

from flask import Flask
from redis import Redis

app = Flask(__name__)
redis = Redis(host='redis', port=6379)

@app.route('/')
def hello():
    redis.incr('hits')
    return 'Hello World! I have been seen %s times.' % redis.get('hits')

if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True)

创建一个定义测试应用程序依赖关系的文件

flask
redis

制作Docker镜像

创建Dockerfile

FROM python:2.7
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD python app.py

构建

$ docker build -t web .

服务定义

编写docker-compose.yml文件

version: '2'
services:
  web:
    build: .
    ports:
     - "5000:5000"
    volumes:
     - .:/code
    depends_on:
     - redis
  redis:
    image: redis

使用Build & Compose启动测试应用

$ docker-compose up

確定

获取IP地址

$ docker-machine ip default
192.168.99.100

请使用浏览器访问以下网址: http://192.168.99.100:5000/

我成功地显示了一个页面,用于显示访问次数而没有任何问题。

スクリーンショット 2016-07-28 19.12.15.png