1. 简介
docker-compose擅长在单机环境中编排docker容器应用,相关指令可以参照docker-compose官网文档。
2. 安装
yum install docker-compose
或
pip install docker-compose
3. 案例
- 创建项目目录
mkdir composetest
cd composetest
- 创建一个app.py文件,这是一个Flask Web应用
import time
import redis
from flask import Flask
app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)
def get_hit_count():
retries = 5
while True:
try:
return cache.incr('hits')
except redis.exceptions.ConnectionError as exc:
if retries == 0:
raise exc
retries -= 1
time.sleep(0.5)
@app.route('/')
def hello():
count = get_hit_count()
return 'Hello World! I have been seen {} times.\n'.format(count)
- 创建一个requirements.txt文件
flask
redis
- 创建Dockerfile文件
FROM python:3.7-alpine
MAINTAINER admin@admin.com
WORKDIR /code
ENV FLASK_APP app.py
ENV FLASK_RUN_HOST 0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["flask", "run"]
- 定义docker-compose.yml文件
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
- 通过docker-compose构建以及运行应用
docker-compose up -d
- 查看容器状态
# docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------
composetest_redis_1 docker-entrypoint.sh redis ... Up 6379/tcp
composetest_web_1 flask run Up 0.0.0.0:5000->5000/tcp
- 访问本地的5000端口
# curl 127.0.0.1:5000
Hello World! I have been seen 1 times.
- 停掉应用
docker-compose stop
- 更多命令
docker-compose --help