docker Compose简介
- Compose is a tool for defining and running multi-container Docker applications.
With Compose, you use a YAML file to configure your application’s services.
Then, with a single command, you create and start all the services from your configuration. - Compose是一个用于定义和运行多容器Docker应用程序的工具。
使用Compose,您可以使用YAML文件配置应用程序的服务。然后,使用一个命令,从配置中创建并启动所有服务。
docker Compose基本步骤
- Using Compose is basically a three-step process:
- 使用Compose基本上是一个三步过程:
- Define your app’s environment with a
Dockerfile
so it can be reproduced anywhere.
用Dockerfile定义你的应用环境,这样它就可以在任何地方复制。 - Define the services that make up your app in
docker-compose.yml
so they can be run together in an isolated environment.
在docker-compose.yml中定义组成应用程序的服务。让它们可以在一个独立的环境中一起运行。 - Run
docker compose up
and the Docker compose command starts and runs your entire app. You can alternatively rundocker-compose up
using the docker-compose binary.
运行docker compose up, docker compose命令会启动并运行整个应用程序。你也可以使用docker-compose二进制文件运行docker-compose up。
安装Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
*国内镜像地址
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version ##查看docker-compose 版本
Docker Compose 官方例子
docker-compose --help ##docker-compose帮助命令
Step 1: 设置
- 1.为项目创建一个目录:
mkdir composetest
cd composetest
- 2.在你的项目目录中创建一个app.py文件,并将下边的代码其粘贴到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)
- 在你的项目目录中创建另一个名为requirements.txt的文件,并将下边的代码其粘贴到requirements.txt
flask
redis
Step 2: 创建一个 Dockerfile
# syntax=docker/dockerfile:1
FROM python:3.7-alpine #从Python 3.7映像开始构建映像
WORKDIR /code #将工作目录设置为/code
ENV FLASK_APP=app.py #设置flask命令使用的环境变量
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers #安装gcc和其他依赖项
COPY requirements.txt requirements.txt #复制requirements.txt
RUN pip install -r requirements.txt #使用pip安装依赖项flask redis
EXPOSE 5000 #向映像添加元数据,以描述容器正在监听端口5000
COPY . . #复制当前目录。在项目的工作目录
CMD ["flask", "run"] #将容器的默认命令设置为flask run
Step 3: 在Compose文件中定义服务
- 在你的项目目录中,创建一个名为docker-compose.yml的文件,并将下边的代码其粘贴到docker-compose.yml
version: "3.9"
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
Step 4:用Compose构建和运行应用程序
docker-compose up