docker compose容器编排工具使用

docker compose

        docker compose是一个工具,用于在docker容器中运行多个服务。它使用YAML文件来配置应用程序的服务,并使用一个命令来启动、停止和管理它们。docker compose允许用户定义多个容器并将它们组合在一起,以便可以轻松地在多个容器之间进行通信和协作。

docker compose的主要功能包括:

定义和运行多个容器的应用程序。
使用命令一次启动、停止和管理多个容器。
提供了一个简单的方式来管理容器之间的依赖关系。
允许用户轻松地扩展和升级应用程序。

docker-compose.yml文件

        docker-compose.yml文件用于定义和配置多个docker容器的运行方式。它包含多个服务的定义,每个服务包含一个或多个容器,可以指定容器的镜像、端口映射、挂载卷、环境变量、依赖关系等。

docker compose命令

  1. 启动容器。
docker compose up
  1. 停止并删除容器。
docker compose down
  1. 列出正在运行的容器。
docker compose ps
  1. 查看容器的日志。
docker compose logs
  1. 在容器内运行命令。
docker compose exec
  1. 重启容器。
docker compose restart

docker compose案例

基于python和redis的compose案例

  1. 新建目录composetest,进入目录
[root@xia ~]# mkdir composetest
[root@xia ~]# 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 Docker Compose! I have been seen {} times.\n'.format(count)
  1. 新建requirements.txt,安装python使用的库
flask
redis
  1. 创建Dockerfile文件来制作镜像,包含python需要的所有依赖
# 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"]
  • 指定基础镜像python3.7
  • 将工作目录设置为 /code
  • 设置命令使用的环境变量
  • 安装 gcc 和其他依赖项
  • 复制并安装 python 依赖项
  • 暴露端口 5000
  • 将项目中的当前目录复制到容器中的工作目录。…
  • 将容器的默认命令设置为 flask run
  1. 创建一个docker-compose.yml,定义一个服务
version: "3.9"
services:
  web:
    build: .
    ports:
      - "8000:5000"
  redis:
    image: "redis:alpine"

其中:
        web服务会使用当前目录Dockerfile文件构建的镜像,并且使用8000端口映射到flask的5000端口,而redis使用官网的镜像。

  1. 查看当前目录文件,在当前目录启动容器
[root@xia composetest]# ls
app.py  docker-compose.yml  Dockerfile  requirements.txt
[root@xia composetest]# docker compose up -d
[+] Running 3/3
 ✔ Network composetest_default    Created                                    0.1s 
 ✔ Container composetest-redis-1  Started                                    0.8s 
 ✔ Container composetest-web-1    Started                                    0.8s 
  1. 浏览器访问

使用compose搭建WordPress

  1. 创建一个my_wordpress目录,并且进入该目录编写docker-compose.yml文件
[root@xia my_wordpress]# vim docker-compose.yml
services:
  db:
    # We use a mariadb image which supports both amd64 & arm64 architecture
    image: mariadb:10.6.4-focal
    # If you really want to use MySQL, uncomment the following line
    #image: mysql:8.0.27
    command: '--default-authentication-plugin=mysql_native_password'
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=somewordpress
      - MYSQL_DATABASE=wordpress
      - MYSQL_USER=wordpress
      - MYSQL_PASSWORD=wordpress
    expose:
      - 3306
      - 33060
  wordpress:
    image: wordpress:latest
    volumes:
      - wp_data:/var/www/html
    ports:
      - 80:80
    restart: always
    environment:
      - WORDPRESS_DB_HOST=db
      - WORDPRESS_DB_USER=wordpress
      - WORDPRESS_DB_PASSWORD=wordpress
      - WORDPRESS_DB_NAME=wordpress
volumes:
  db_data:
  wp_data:
  1. 运行容器
[root@xia my_wordpress]# docker compose up -d
[+] Running 3/3
 ✔ Network my_wordpress_default        Cre...                                0.1s 
 ✔ Container my_wordpress-db-1         Star...                               0.7s 
 ✔ Container my_wordpress-wordpress-1  Started                               0.8s
  1. 浏览器访问80端口,当看到以下页面时,表示成功
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值