docker-compose

安装 Docker Compose 并运行一个简单的 Python Web 应用

安装

$ sudo -i
$ curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

$ chmod +x /usr/local/bin/docker-compose

运行一个简单的 Python Web 应用
步骤1:设置
创建项目目录:

$ mkdir composetest
$ cd composetest

在项目目录中创建 app.py:

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)

在项目目录下创建 requirements.txt 定义依赖,内容如下:

flask
redis

步骤 2:创建一个 Docker 映像文件
在项目目录下创建 Dockerfile 文件,内容如下:

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

该文件告诉 Docker:

基于 Python 2.7 映像开始构建新映像
将当前目录挂载到映像的 /code 目录
安装 Python 依赖文件
设置容器默认运行的命令 python app.py
再创建一个名为 web 的新映像文件:

$ docker build -t web .

步骤 3:定义服务
使用 docker-compose.yml 来定义一组服务:

1, 在项目目录中创建 docker-compose.yml 文件,内容如下:

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

该文件定义了两个服务: web 和 redis。

针对 web 服务:

将从当前目录下的 Dockerfile 文件构建出 web 映像
将主机的 5000 端口映射到容器中的 5000 端口
将主机的当前目录挂载到容器的 /code 目录,从而当代码修改后,无需重建映像
将 web 服务与 redis 服务连接起来
步骤 4:构建并用 Compose 运行应用
在项目目录下,开启应用:

$ docker-compose up

Pulling image redis…
Building web…
Starting composetest_redis_1…
Starting composetest_web_1…
redis_1 | [8] 02 Jan 18:43:35.576 # Server started, Redis version 2.8.3
web_1 | * Running on http://0.0.0.0:5000/
web_1 | * Restarting with stat
之后,就能通过 5000 端口进行访问了。

步骤 5:实验其它的命令
通过使用 -d 使服务在后端运行,通过 docker-compose ps 来查看当前运行的服务:

$ docker-compose up -d

Starting composetest_redis_1…
Starting composetest_web_1…
$ docker-compose ps
Name Command State Ports
-------------------------------------------------------------------
composetest_redis_1 /usr/local/bin/run Up
composetest_web_1 /bin/sh -c python app.py Up 5000->5000/tcp
通过 docker-compose run 可以在服务上运行一次性命令,例如查看 web 服务上的环境变量:

$ docker-compose run web env

对应 docker-compose up -d,停止用 docker-compose stop。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值