☰
awesome-compose 实战:用 Docker Compose 部署 Plex 媒体服务器(linuxserver 镜像)
2026/9/30 1:41:47 网站建设 项目流程
  • 示例工程

【免费下载链接】awesome-compose

Awesome Docker Compose samples

项目地址:https://gitcode.com/gh_mirrors/aw/awesome-compose
点击查看免费下载

本文以 awesome-compose 仓库中的plex单服务示例为主线,完整讲解如何通过一份 compose.yaml 与 .env 配置,在本地 Docker 环境中一键拉起 Plex 媒体服务器,并覆盖镜像选择、host 网络模式、媒体目录挂载、版本管理变量、硬件加速注意事项以及容器启停与数据清理等完整流程。读完本文,你将能够独立复现该示例,并理解每个配置项背后的作用与调整方向。

示例概览:一个单服务、极简的 Plex 部署

Plex 是一款流行的媒体服务器软件,可将本地的电影、剧集、照片与音乐整理成媒体库,并通过 Web 界面与各类客户端进行串流播放。awesome-compose 仓库中的plex示例为该用途提供了一个"开箱即跑"的基础配置:整个项目只有三个文件:

plex/ ├── .env ├── compose.yaml └── README.md
  • compose.yaml:定义 Plex 容器的完整 Compose 服务配置;
  • .env:存放部署前必须自定义的环境变量(媒体路径);
  • README.md:官方说明文档,包含部署、验证与清理命令。

该示例被归类在仓库根 README.md 的 "Single service samples"(单服务示例)一节中,定位是本地开发环境或个人用途的基础搭建,不属于生产级部署方案。

compose.yaml 逐项解析

示例的完整 Compose 文件如下(来自 compose.yaml):

services: plex: image: linuxserver/plex container_name: plex network_mode: host environment: - VERSION=docker restart: always volumes: - ${PLEX_MEDIA_PATH}:/media/

下面逐项说明每个字段的含义与影响:

配置项取值作用与说明
imagelinuxserver/plex使用 linuxserver 社区维护的 Plex 镜像(README 中展示的完整写法为linuxserver/plex:latest,即默认拉取最新标签)。该镜像以其易用性、完善的文档和活跃维护著称;你也可以替换为其他镜像,例如 Plex 官方维护的plexinc/pms-docker镜像。
container_nameplex固定容器名,方便在docker ps、docker logs等命令中直接按名称操作。
network_modehost使用宿主机网络模式,容器直接共享宿主机的网络栈。Plex 的默认 Web 端口 32400 因此直接暴露在宿主机上,访问http://localhost:32400/web即可打开管理界面,无需额外编写ports映射。
environment.VERSIONdockerlinuxserver 镜像专有的版本管理变量,表示 Plex 应用的更新节奏由 Docker 镜像更新流程控制(即通过拉取新镜像重建容器来升级),而非容器内部自行升级。
restartalways容器异常退出或 Docker 守护进程重启后自动拉起,适合需要长期运行的媒体服务器。
volumes${PLEX_MEDIA_PATH}:/media/将宿主机上由.env中PLEX_MEDIA_PATH指定的媒体目录挂载到容器内的/media/,供 Plex 扫描与读取媒体文件。

注意:示例出于简洁考虑只挂载了媒体目录,没有为 Plex 的配置库(/config)单独声明持久化卷。在实际长期使用中,通常还需要额外挂载一个配置目录,以保证媒体库元数据、封面与播放进度等不会因容器重建而丢失——这属于基于该基础配置的常见扩展方向,可结合你使用的镜像文档进一步调整。

host 网络模式的使用前提

network_mode: host是 linuxserver 版 Plex 容器最常用的网络方案,因为它能天然规避 UPnP、局域网发现等对多网卡/端口的要求。但它也有明确的适用前提:

  • 该模式在 Linux 宿主机上工作正常;
  • 在 macOS 与部分 Windows Docker Desktop 环境中,host 网络模式的支持与行为有限,端口暴露方式可能不一致;
  • 使用 host 模式后,容器不再拥有独立的网络命名空间,因此 Compose 文件中不再需要(也不建议)同时声明ports,否则可能产生端口绑定冲突。

如果需要在其他网络模式下运行,可自行改为network_mode: bridge(默认)并显式声明ports: - "32400:32400",此时局域网内其他设备需通过宿主机 IP 访问。

.env:部署前必须配置的媒体路径

示例采用 Compose 的变量替换机制:compose.yaml中的${PLEX_MEDIA_PATH}会在启动时从同目录下的 .env 文件读取。默认内容为:

PLEX_MEDIA_PATH=/media/your/plex/path

部署前,请将PLEX_MEDIA_PATH改为宿主机上真实存放媒体文件的目录,例如:

PLEX_MEDIA_PATH=/data/plex/media

该值会被原样挂载到容器的/media/目录。配置要点:

  • 路径必须是宿主机上的绝对路径(容器侧挂载点固定为/media/);
  • 目录需要存在且对 Docker 守护进程可读;
  • 修改.env后,需要重新执行docker compose up -d让新值生效(可加--force-recreate强制重建容器)。

硬件加速(Hardware Acceleration)

Plex 的硬件加速(硬件转码)能力依赖宿主机的 GPU 设备透传给容器,该功能由 linuxserver 的 Plex 镜像提供支持,具体说明位于 linuxserver 的 docker-plex 文档中,README 中也明确指引读者前往该文档查看详细描述。硬件加速通常还涉及 Plex Pass 订阅权限以及宿主机 GPU 驱动(如 Intel Quick Sync、NVIDIA 等)的安装与设备挂载。由于不同 GPU、驱动与镜像版本的组合差异较大,建议在启用前:

  1. 确认你的 Plex 账号具备硬件转码权限;
  2. 查阅你所选 Plex 镜像(linuxserver 或官方镜像)关于 GPU 透传与设备参数的文档;
  3. 在真实设备上小范围验证转码效果后再全面启用。

部署与访问

进入plex示例目录,执行:

$ docker compose up -d Starting plex ... done

-d参数让容器在后台运行。由于network_mode: host,Plex 的 Web 界面直接监听在宿主机的 32400 端口,浏览器访问:

http://localhost:32400/web

即可打开 Plex Web 管理界面,按向导完成初始化(登录 Plex 账号、命名服务器、添加媒体库并指向/media/下挂载的目录)。

验证运行结果

容器启动后,可用docker ps确认状态。README 给出的预期输出如下:

$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 62fc3ff1f1a0 linuxserver/plex:latest "/init" 38 seconds ago Up 3 seconds plex

可以看到容器以plex名称运行,镜像为linuxserver/plex:latest,入口命令为/init。由于使用了 host 网络模式,PORTS列不会显示端口映射,这是符合预期的——端口已直接绑定在宿主机上。

如果容器未正常启动,可依次排查:

$ docker logs plex # 查看容器日志 $ docker compose ps # 查看 Compose 服务状态

停止容器与清理数据

停止并移除该示例创建的容器:

$ docker compose down

如果希望连同 Compose 创建的匿名卷等数据一并删除(示例中即挂载配置与运行时产生的数据),使用:

$ docker compose down -v

注意:-v会删除与该 Compose 项目关联的卷数据,媒体文件本身位于宿主机目录(由PLEX_MEDIA_PATH指定)中,不受影响;但任何写在容器卷内的配置数据会被清除,请谨慎使用。

扩展方向与注意事项

基于该基础示例,常见扩展方向包括:

  • 更换镜像:README 明确指出,除了 linuxserver 镜像外,也可以使用 Plex 官方镜像(plexinc/pms-docker),两者在环境变量、挂载点与启动方式上略有差异,切换时需对照各自文档调整配置;
  • 持久化配置目录:为/config增加命名卷或宿主目录挂载,避免重建容器后媒体库元数据丢失;
  • 自定义VERSION策略:linuxserver 镜像的VERSION变量用于控制 Plex 更新行为,除docker外还有其他取值(如跟随最新版本等),具体语义以镜像文档为准;
  • 媒体库多目录:可在volumes中追加多个${HOST_PATH}:${CONTAINER_PATH}条目,将电影、剧集、照片等分别挂载到不同容器目录,便于在 Plex 中按类型建库。

最后需要强调适用范围:与仓库根 README.md 的声明一致,包括本示例在内的所有 Compose 样例均面向本地开发环境与个人使用,用于快速起步和功能验证,不应直接照搬部署到生产环境。如需生产级运行,请结合官方镜像文档、配置持久化、安全加固与备份方案综合设计。

  • 示例工程

【免费下载链接】awesome-compose

Awesome Docker Compose samples

项目地址:https://gitcode.com/gh_mirrors/aw/awesome-compose
点击查看免费下载
上一篇:【亲测免费】 Rust版Headless Chrome库:强大的浏览器自动化工具
下一篇:Visdom Environments 环境机制完全指南:可视化空间分区、持久化存储与编程管理

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询