13
10 月
2023

群晖Compose配置docker容器

按照官方的解释,Compose 是「用于定义和运行多容器 Docker 应用程序的工具」。简单地说,在你需要运行多个容器来构建一个复杂的应用程序时,Compose 可以轻松配置它们之间的网络连接、数据卷挂载、环境变量等,这比使用 docker run 命令来分别启动每个容器要容易得多。即使只是单纯用来管理多个容器的部署,Compose 也是十分轻便快捷的选择。更关键的是,YAML 格式的 docker-compose.yml 文件可以很清晰地看出每个容器的结构,我认为这对于新手来说十分友好的。除去需要注意 YAML 的格式。

这里我用《AutoBangumi:自动追番,解放双手》中的 docker-compose.yml 进行演示,如下:

version: "3.9"
services:

  qBittorrent:
    image: johngong/qbittorrent:latest
    container_name: qBittorrent
    ports:
      - 8989:8989 #两者需与下方的QB_WEBUI_PORT一项完全一致
    environment:
      - PUID=1000
      - PGID=1000
      - QB_WEBUI_PORT=8989
    volumes:
      - ./qb:/config
      - ./Downloads:/Downloads
    restart: unless-stopped

  AutoBangumi:
    image: estrellaxd/auto_bangumi:latest
    container_name: AutoBangumi
    ports:
      - 7892:7892
    depends_on:
      - qBittorrent
    volumes:
      - ./autoBangumi:/config
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
      - AB_DOWNLOADER_HOST=qBittorrent:8989
      - AB_DOWNLOADER_USERNAME=admin #默认用户名
      - AB_DOWNLOADER_PASSWORD=adminadmin #默认密码
      - AB_INTERVAL_TIME=7200 
      - AB_RENAME_FREQ=20
      - AB_METHOD=Advance
      - AB_GROUP_TAG=True
      - AB_NOT_CONTAIN=720|繁体|CHT|JPTC|繁日|\d+-\d+|BIG5|内嵌
      - AB_DOWNLOAD_PATH=/Downloads/Bangumi
      - AB_RSS= #填入你的RSS订阅链接
      - AB_DEBUG_MODE=False
      - AB_EP_COMPLETE=False
      - AB_WEBUI_PORT=7892
      - AB_RENAME=True
      - AB_ENABLE_TMDB=True
      - AB_LANGUAGE=zh
    restart: unless-stopped

在这个例子中,文件的结构及配置都比较简单,主要由以下几部分组成:

  1. version:定义 Compose 文件版本,版本号与 Docker 引擎相关,为固定格式
  2. services:一个 docker-compose.yml 文件中包含的所有服务,为固定格式
  3. image:从指定的镜像中启动容器,可以是存储仓库、标签或本地的 Dockerfile 文件
  4. container_name:容器名称,需唯一
  5. ports:端口映射,即 Docker CLI 的 -p,左侧是本地端口(容器没有严格要求的话可以任意修改),右侧是容器内部的端口
  6. depends_on:服务之间的依赖关系。在这个例子中,运行 docker compose up -d 命令后,只有 qBittorrent 成功启动,AutoBangumi 才会启动
  7. volumes:挂载一个新的或已存在的目录,即 Docker CLI 的 -v,左侧是本地路径,右侧是容器内部的路径
  8. environment:容器所需的环境变量,即 Docker CLI 的 -e
  9. restart:重启策略,一般使用 always 或 unless-stopped即 Docker CLI 的 --restart

像 AutoBangumi 这么长的环境变量,无论是用群晖 Docker 面板还是 Docker CLI,调整配置都是极其繁琐复杂的过程,更别说需要先手动停止容器,才能进行变量的删改工作。而 Compose 可以直接在 docker-compose.yml 文件即时修改任何配置项,最后只要使用 docker compose up -d 命令,就可自动完成停止容器、重新上线容器的步骤。

再举个例子,假如需要更换某个容器的版本号,使用群晖 Docker 面板的话,只能手动选择镜像下载,再新建容器,环境变量都要重新填写,无法在原有的容器基础上进行版本号的修改,而 Compose 只要直接修改一个版本号,再 docker compose up -d 就好。

另外,在同时配置多个容器的情况下,只修改某个容器,并不会影响到其他容器的运行,这也是 Compose 的优点之一。

编写 Docker Compose 文件

You may also like...

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注