使用Docker部署ClassicOldSong/Apollo项目的完整指南
2025-07-08 06:48:48作者:钟日瑜
项目概述
ClassicOldSong/Apollo项目提供了一个基于Docker的部署方案,让用户能够轻松地在容器环境中运行最新版本的Sunshine服务。Sunshine是一个开源的游戏流媒体服务,允许用户通过网络将游戏从主机设备流式传输到客户端设备。
版本注意事项
从v0.18.0版本开始,项目的Docker镜像标签命名规则发生了变化:
- 不再支持
latest
、master
、vX.X.X
等简单标签 - 必须使用组合标签格式
<SUNSHINE_VERSION>-<SUNSHINE_OS>
构建自定义容器
项目提供了基础镜像,方便用户在自己的Docker项目中集成最新版Sunshine。以下是构建自定义容器的示例Dockerfile:
ARG SUNSHINE_VERSION=latest
ARG SUNSHINE_OS=ubuntu-22.04
FROM lizardbyte/sunshine:${SUNSHINE_VERSION}-${SUNSHINE_OS}
# 安装Steam、Wayland等必要组件
RUN apt-get update && apt-get install -y steam wayland
# 设置容器启动命令
ENTRYPOINT ["steam", "&&", "sunshine"]
版本参数说明
SUNSHINE_VERSION支持以下格式:
- 版本标签:
latest
、master
、vX.X.X
- 具体的提交哈希值
SUNSHINE_OS支持以下基础镜像:
archlinux
debian-bookworm
ubuntu-22.04
ubuntu-24.04
部署方案
1. 使用docker run命令部署
docker run -d \
--device /dev/dri/ \
--name=apollo_sunshine \
--restart=unless-stopped \
--ipc=host \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Asia/Shanghai \
-v /path/to/config:/config \
-p 47984-47990:47984-47990/tcp \
-p 48010:48010 \
-p 47998-48000:47998-48000/udp \
lizardbyte/sunshine:latest-ubuntu-22.04
2. 使用docker-compose部署
创建docker-compose.yml
文件:
version: '3'
services:
sunshine:
image: lizardbyte/sunshine:latest-ubuntu-22.04
container_name: apollo_sunshine
restart: unless-stopped
devices:
- /dev/dri:/dev/dri
volumes:
- /path/to/config:/config
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai
ipc: host
ports:
- "47984-47990:47984-47990/tcp"
- "48010:48010"
- "47998-48000:47998-48000/udp"
3. 使用podman部署
podman run -d \
--device /dev/dri/ \
--name=apollo_sunshine \
--restart=unless-stopped \
--userns=keep-id \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Asia/Shanghai \
-v /path/to/config:/config \
-p 47984-47990:47984-47990/tcp \
-p 48010:48010 \
-p 47998-48000:47998-48000/udp \
lizardbyte/sunshine:latest-ubuntu-22.04
关键配置参数
参数 | 说明 | 示例值 | 是否必需 |
---|---|---|---|
-p 47990:47990 |
Web UI访问端口 | 47990 | 是 |
-v /path:/config |
配置文件挂载路径 | /home/user/sunshine | 是 |
-e PUID=1000 |
用户ID | 1000 | 否 |
-e PGID=1000 |
用户组ID | 1000 | 否 |
-e TZ=Asia/Shanghai |
时区设置 | Asia/Shanghai | 否 |
用户权限管理
为了避免容器与宿主机之间的文件权限问题,建议设置正确的PUID和PGID。可以通过以下命令查看当前用户的ID信息:
id $USER
输出示例:
uid=1000(user) gid=1000(user) groups=1000(user)
架构支持情况
操作系统 | x86_64支持 | ARM64支持 |
---|---|---|
Arch Linux | ✅ | ❌ |
Debian Bookworm | ✅ | ✅ |
Ubuntu 22.04 | ✅ | ✅ |
Ubuntu 24.04 | ✅ | ✅ |
最佳实践建议
- 数据持久化:务必将
/config
目录挂载到宿主机,防止配置丢失 - 权限管理:在Linux系统上,确保挂载目录的权限与容器内用户一致
- 资源隔离:考虑使用
--cpus
和--memory
限制容器资源使用 - 日志监控:使用
docker logs
或配置日志驱动来监控容器运行状态 - 安全更新:定期检查并更新到最新版本的Sunshine镜像
通过以上配置,您可以在Docker环境中稳定运行ClassicOldSong/Apollo项目,享受Sunshine带来的游戏流媒体服务。