Docker Compose使用
一、官方介绍
Compose是用于定义和运行多容器Docker应用程序的工具。通过Compose,您可以使用YAML文件来配置应用程序的服务。然后,使用一个命令,就可以从配置中创建并启动所有服务。
Compose可在所有环境中工作:生产,开发,测试以及CI工作流。、
使用Compose基本上是一个三步过程:
- 使用定义您的应用环境,
Dockerfile以便可以在任何地方复制。
- 定义组成应用程序的服务,docker-compose.yml
以便它们可以在隔离的环境中一起运行。
- Run
docker-compose up and Compose启动并运行您的整个应用程序
二、docker compose安装
1、运行以下命令以下载Docker Compose的当前稳定版本:
curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose(国外网站比较慢)
或者:curl -L "https://get.daocloud.io/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose(推荐)
2、将可执行权限应用于二进制文件:
chmod +x /usr/local/bin/docker-compose
3、测试安装
docker-compose version
三、docker compose使用
1、设定
1)为项目创建目录:mkdir composetest
2)进入创建文件夹:cd composetest
3)在项目目录中创建一个名为app.py的文件:vim 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)
4)在项目目录中创建另一个名为requirements.txt添加:
flask
redis
2、创建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 EXPOSE 5000 COPY . . CMD ["flask", "run"]
- 从Python 3.7映像开始构建映像。
- 将工作目录设置为/code。
- 设置flask命令使用的环境变量。
- 安装gcc和其他依赖项
- 复制requirements.txt并安装Python依赖项。
- 向图像添加元数据以描述容器正在侦听端口5000
- 将
.
项目中的当前目录复制到.
映像中的工作目录。 - 将容器的默认命令设置为flask run
。
3、编写docker-compose.yml
version: "3.8" services: web: build: . ports: - "5000:5000" redis: image: "redis:alpine"
4、启动doker compose
docker-compose up
四、docker compose其他命令
停止docker compose: docker-compose down
查看docker网络:docker network ls
查看docker网络细节:docker network inspect composetest_default
查看docker compose进程:docker-compose ps