Docker Compose
一、简介
Docker-Compose是一个容器编排工具。通过一个.yml或.yaml文件,将所有的容器的部署方法、文件映射、容器端口映射等情况写在一个配置文件里,使用单个命令,您可以从配置中创建并启动所有服务。执行docker-compose up命令就像执行脚本一样,一个一个的安装并部署容器。
二、安装
1.下载 Compose
curl -SL https://github.com/docker/compose/releases/download/v2.6.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
2.赋予执行权限
chmod +x /usr/local/bin/docker-compose
3.查看 Compose 版本
docker-compose version
三、体验
官方文档:https://docs.docker.com/compose/gettingstarted
1.创建目录
mkdir composetest cd composetest
2.在项目目录中创建一个名为的文件 app.py
vim 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)
3.在项目目录中创建另一个名为的文件 requirements.txt
vim requirements.txt # 编写requirements.txt 写入以下内容
flask
redis
4.在项目目录中,创建一个名为 Dockerfile
vim Dockerfile # 编写Dockerfile 写入以下内容 # syntax=docker/dockerfile:1 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"]
5.在项目目录中创建一个名为的文件 docker-compose.yml
vim docker-compose.yml # 编写 docker-compose.yml文件 写入以下内容 version: "3.9" services: web: build: . ports: - "8000:5000" redis: image: "redis:alpine"
6.在项目目录中,通过运行 docker-compose up
docker-compose up # 前台启动
docker-compose up -d # 后台启动
7.在浏览器输入宿主机IP:8000
ctrl+c # 停止容器
8.尝试其他一些命令
(1)如果您想在后台运行您的服务,您可以将-d
标志(用于“分离”模式)传递给docker-compose up
并用于docker-compose ps
查看当前正在运行的内容:
docker-compose up -d
(2)如果您使用 Compose 开始docker-compose up -d
,请在完成后停止您的服务
docker-compose stop
(3)您可以使用命令将所有内容都关闭,完全删除容器down
。传递--volumes
也删除 Redis 容器使用的数据卷:
docker-compose down --volumes
四、docker-compose.yml 文件
1.yaml配置规则
# 三层 version: "3.9" # 第一层:版本 services: # 第二层:服务 web: images: bulid: ports: network: ... redis: ... mysql: ... # 第三层 其他配置 网络、数据卷、全局配置 networks: frontend: backend: volumes: db-data: configs:
2.yaml配置样例
version: "3.9" services: web: build: . # 第三步 depends_on: - db - redis redis: # 第二步 image: redis db: # 第一步 image: postgres
五、实战-部署wp博客
1.创建 my_wordpress 目录,编写yml文件
cd /home # 进入home目录 mkdir my_wordpress # 创建 my_wordpress 目录 cd my_wordpress # 进入 my_wordpress 目录
vim docker-compose.yml # 编写 docker-compose.yml 写入以下内容 version: "3.9" services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:latest volumes: - wordpress_data:/var/www/html ports: - "8000:80" restart: always environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volumes: db_data: {} wordpress_data: {}
2.构建项目,docker-compose up -d
从您的项目目录运行
docker-compose up -d # 后台方式启动