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   # 后台方式启动

posted @ 2022-06-16 16:51  荔枝的汁  阅读(157)  评论(0编辑  收藏  举报