Docker Compose入门

本文详细介绍了DockerCompose的作用、安装方法,以及如何使用它来定义和管理一个包含多个服务(如LabelStudio,gateway,yapi,backend,redis)的容器应用,包括服务配置、启动/停止操作和常用DockerCompose命令的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. Docker Compose 简介

Docker Compose 允许通过 docker-compose.yml 文件来定义一个多服务的应用环境。每个服务可以是一个容器,这些容器可以共享网络,存储卷等资源。

2. 安装 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 chmod +x /usr/local/bin/docker-compose

3. 使用 Docker Compose

3.1 创建 docker-compose.yml

创建一个目录,然后在该目录下创建一个 docker-compose.yml 文件,文件内容和注释如下:

version: "3.3"  # 指定使用的 Docker Compose 文件版本。

services:  # 定义要运行的服务。
  labelstudio:  # 定义一个服务,名为 labelstudio。
    image: heartexlabs/label-studio:1.6.0  # 指定 labelstudio 服务使用的 Docker 镜像及其版本。
    env_file:  # 指定环境变量文件。相当于docker run -e参数
      - .env  # 引用同目录下的 .env 文件
    ports:  # 指定端口映射。
      - ${LABEL_TOOL_HOST_PORT}:8080  # 将环境变量 LABEL_TOOL_HOST_PORT 指定的端口映射到容器的 8080 端口。
    environment:  # 在此服务中设置额外的环境变量。
      - LOCAL_FILES_SERVING_ENABLED=true
      - LABEL_STUDIO_USERNAME=${FIRST_ADMIN}
      - LABEL_STUDIO_PASSWORD=${FIRST_ADMIN_PASSWORD}
      - LABEL_STUDIO_USER_TOKEN=${LABEL_TOOL_TOKEN}
    volumes:  # 定义数据卷,用于持久化和共享数据。
      - "${USER_PATH}/label-studio_data:/label-studio/data"  # 将宿主机的路径映射到容器中的 /label-studio/data。
      - "${BACKEND_SANDBOX_ROOT}:${BACKEND_SANDBOX_ROOT}"  # 映射宿主机的路径到容器相同的路径。
    restart: on-failure:10  # 设置失败重启策略,最多重试 10 次。
    networks:  # 指定网络配置。
      - usernetwork  # 将服务加入到 usernetwork 网络。

gateway:  # 定义第二个服务,名为 gateway。
    image: industryessentials/traefik:release-2.5.0 # 指定服务使用的镜像
    env_file: # 指定环境变量文件
      - .env
    ports: # 映射端口
      - ${NGINX_PORT}:80 # 映射宿主机的端口到容器的 80 端口
    volumes: # 指定卷,用于持久化和共享数据
      - ${USER_PATH}/user-data/logs:/app_logs # 映射日志目录
    networks: # 指定网络
      - usernetwork # 连接到 usernetwork 网络

yapi: # 定义第三个服务,名为 yapi。
    image: industryessentials/user-backend:release-2.5.0  # 使用的 Docker 镜像及其版本
    command: bash -c 'cd /yapi && supervisord -nc supervisor/supervisord.conf'  # 容器启动后执行的命令。
    env_file:  # 指定环境变量文件列表。
      - .env  # 引用当前目录下的 .env 文件
    volumes:  # 定义数据卷,用于持久化和共享数据。
      - ${USER_PATH}/user-data/logs:/app_logs  # 将宿主机的 ${USER_PATH}/user-data/logs 目录挂载到容器的 /app_logs 目录。
    runtime: ${SERVER_RUNTIME}  # 指定容器的运行时环境,${SERVER_RUNTIME} 也是一个环境变量,用于支持不同的 Docker 运行时。
    networks:  # 定义网络配置。
      - usernetwork  # 指定该服务应连接到的网络。
    depends_on:  # 定义服务启动顺序。
      - backend  # 指定 yapi 服务依赖 backend 服务,确保 backend 服务先启动。
    healthcheck:  # 定义如何检查服务的健康状态。
      test: curl --fail -s http://localhost:80/health || exit 1  # 使用 curl 访问 http://localhost:80/health,如果请求失败,则退出码为 1。
      interval: 60s  # 设置为每 60 秒执行一次。
      timeout: 6s  # 健康检查的超时时间。设置为 6 秒。
      retries: 3  # 如果健康检查失败,重试的次数。
      start_period: 30s  # 服务启动后,延迟开始执行健康检查的时间。

backend:  # 定义第四个服务,名为 backend。
    image: industryessentials/backend:release-2.5.0
    env_file:
      - .env
    runtime: ${SERVER_RUNTIME}
    environment: # 环境变量
      - BACKEND_REDIS_URL=redis://redis:6379/0 # Redis 服务的 URL
    volumes:
      # 卷的配置,同之前
    depends_on: # 此服务依赖的其他服务
      - redis
    command: bash -c 'cd /app && supervisord -nc supervisor/supervisord.conf' # 容器启动后执行的命令。
    restart: on-failure:10 # 在失败时重启,最多重启 10 次
    healthcheck: # 健康检查配置,与 yapi 服务类似
    networks:
      - usernetwork

redis:  # 定义第五个服务,名为 redis。
    image: industryessentials/backend-redis
    command: redis-server /config/redis/redis.conf --loadmodule /usr/lib/redis/modules/redisgraph.so # 启动 Redis 服务器的命令
    volumes:
      # 卷的配置,同之前
    restart: on-failure:10
    healthcheck: # 健康检查配置
    networks:
      - usernetwork

networks:  # 定义网络。
    usernetwork:  # 定义一个名为 usernetwork 的网络。
      name: ${COMPOSE_PROJECT_NAME}_network  # 使用环境变量 COMPOSE_PROJECT_NAME 定义网络的名称。
      external: true  # 指定这是一个外部网络,意味着这个网络应该已经存在,不会由这个 Docker Compose 文件创建。
3.2 启动服务

docker-compose.yml 文件所在的目录中运行以下命令来启动服务:

docker-compose up
3.3 停止服务

要停止并移除由 docker-compose up 命令创建的所有容器,您可以使用:

docker-compose down

4. Docker Compose 命令

  • docker-compose up:启动服务
  • docker-compose down:停止并移除容器、网络、卷和镜像
  • docker-compose build:构建或重新构建服务
  • docker-compose logs:查看服务的日志输出
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值