Compose是用于定义和运行多容器Docker应用程序的工具。通过Compose,您可以使用YAML文件来配置应用程序的服务。然后,使用一个命令,就可以从配置中创建并启动所有服务。
Docker-Compose 安装:
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
测试安装:
$ docker-compose --version
docker-compose version 1.25.0, build 0a186604
跟着官网的demo进行一个docker-compose的入门:
确保已安装Docker Engine和Docker Compose。您无需安装Python或Redis,因为两者均由Docker映像提供。
1.为项目创建目录:
mkdir /composetest cd composetest
2.新建app.py
在项目目录中创建一个名为的文件,并将其粘贴到:
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)
在此示例中,redis
是应用程序网络上的redis容器的主机名。我们为Redis使用默认端口6379
。
3.requirements.txt
在项目目录中创建另一个名为的文件,并将其粘贴到:、
flask redis
4.在您的项目目录中,创建一个名为的文件Dockerfile
并粘贴以下内容:
FROM python:3.7-alpine 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"]
5.新建 docker-compose.yml
在项目目录中创建一个名为的文件,然后粘贴以下内容:
version: '3' #表示docker-compose的版本 services: #相当于原先的container ,一个service表示一个container web: #container的名字 build: . ports: - "5000:5000" #映射端口 networks: - app-net #网段 redis: image: "redis:alpine" networks: - app-net networks: #相当于docker network create app-net app-net: driver: bridge
该Compose文件定义了两个服务:web
和redis
。
6.执行 docker-compose up 运行来启动应用程序
7.在浏览器中输入ip:5000 /以查看应用程序正在运行。您应该在浏览器中看到一条消息,内容为:
Hello World! I have been seen 1 times.
docker-compose常见操作:
docker-compose version --查看版本 docker-compose up --根据yml创建service 指定yaml:docker-compose up -f xxx.yaml 后台运行:docker-compose up -d docker-compose ps --查看启动成功的service ,也可以使用docker ps docker-compose images --查看images docker-compose stop/start --停止/启动service docker-compose down --删除service[同时会删除掉network和volume] docker-compose exec redis sh --进入到某个service
docker-compose up --scale web=5 -d --若要对python容器进行扩缩容
docker-compose logs web --日志