进阶 docs.stashapp.cc 2026-10-20 02:59:21 · 11 阅读

第9章 Docker

第9章 Docker

Docker 本质上是一个跨平台的软件包仓库。它允许你通过容器将整个环境打包发布。容器旨在囊括运行应用所需的一切,从而让应用轻松从一个位置迁移到另一个位置,也让沿途的所有人都能轻易复现该环境。

stash 的 Docker 容器自带自动运行 stash 所需的所有内容,包括 ffmpeg。

提示
启动前请确保系统已安装 Docker。可参考 Docker 官方文档获取安装指南。

官方镜像

stashapp 团队托管镜像

  • 源代码仓库: https://github.com/stashapp/stash
  • DockerHub 镜像: https://hub.docker.com/r/stashapp/stash/
详情
  • 不支持硬件加速
  • 不包含 Python 管理器
  • 完全兼容 ARM 架构

Docker Compose

https://github.com/stashapp/stash/blob/master/docker/production/docker-compose.yml

# APPNICENAME=Stash
# APPDESCRIPTION=An organizer for your porn, written in Go
services:
  stash:
    image: stashapp/stash:latest
    container_name: stash
    restart: unless-stopped
    ## 容器端口必须与环境变量部分中的 STASH_PORT 保持一致
    ports:
      - "9999:9999"
    ## 若需使用 stash 的 DLNA 功能,请取消下方 network_mode 的注释,并注释掉上方的 ports 部分
    # network_mode: host
    logging:
      driver: "json-file"
      options:
        max-file: "10"
        max-size: "2m"
    environment:
      - STASH_STASH=/data/
      - STASH_GENERATED=/generated/
      - STASH_METADATA=/metadata/
      - STASH_CACHE=/cache/
      ## 修改此处以更改默认端口(9999)
      - STASH_PORT=9999
    volumes:
      - /etc/localtime:/etc/localtime:ro
      ## 可根据需求调整下方路径(左侧部分)。
      ## 例如,可以将 ./config:/root/.stash 改为 ./stash:/root/.stash
      ## 左侧是宿主机上的路径,右侧是 stash 容器内的路径。

      ## 在此存放配置、scraper 和插件。
      - ./config:/root/.stash
      ## 将此路径指向你的媒体库。
      ## 左侧是宿主机上媒体库的位置,右侧是容器内媒体库的位置。
      - ./data:/data
      ## stash 的元数据存放位置
      - ./metadata:/metadata
      ## 其他缓存内容。
      - ./cache:/cache
      ## 二进制 Blob 数据(场景封面、图片)存放位置
      - ./blobs:/blobs
      ## 生成内容(截图、预览、转码、雪碧图)存放位置
      - ./generated:/generated

从 Dockerfile 构建

Dockerfile (x86_64)

https://github.com/stashapp/stash/blob/master/docker/build/x86_64/Dockerfile

Dockerfile-CUDA (x86_64)

https://github.com/stashapp/stash/blob/master/docker/build/x86_64/Dockerfile-CUDA

  • 添加对 NVENC 的支持
  • 添加 Intel QSV 驱动程序

社区镜像

免责声明
这些镜像不由 stashapp 团队管理。

feederbox826

  • 源代码仓库: https://github.com/feederbox826/stash-s6
  • DockerHub 镜像: https://hub.docker.com/r/feederbox826/stash-s6
  • GitHub 镜像: https://github.com/feederbox826/stash-s6/pkgs/container/stash-s6
详情
  • 支持硬件加速
  • uv Python 管理器

nerethos

  • 源代码仓库: https://github.com/nerethos/docker-stash
  • DockerHub 镜像: https://hub.docker.com/r/nerethos/stash
  • GitHub 镜像: https://github.com/nerethos/docker-stash/pkgs/container/stash
详情
  • 支持硬件加速
  • venv Python 管理器

使用 Docker Compose 安装

注意
简化的安装指南请访问 此处。
  1. 从我们的 GitHub 下载并保存 docker-compose.yml 文件。
  2. 根据你的偏好修改 docker-compose.yml 文件。
  3. 在保存 docker-compose.yml 文件的同一目录中打开终端,或使用 cd 命令进入该目录。
  4. 运行 docker compose up -d。
  5. 以这种方式安装后,Stash 将绑定到 9999 端口。
  6. 如果一切顺利,Stash 将在本地通过 http://localhost:9999 或通过网络通过 http://YOUR-LOCAL-IP:9999 访问。

更新

从 <=v0.20 迁移

如果你正在从 v0.20 之前的旧版本升级,请确保从我们的 GitHub 重新下载 docker-compose.yml 文件,因为新增了卷映射。


或者,你可以编辑 docker-compose.yml 文件,手动添加新的卷映射:`- ./blobs:/blobs`。 进入保存 docker-compose.yml 的目录。 运行 `docker compose pull`。拉取新镜像。 运行 `docker compose down`。移除旧容器。 运行 `docker compose up -d`。创建并启动新容器。 确保挂载点和配置与之前的 docker-compose.yml 文件保持一致。 移除¶ 进入保存 docker-compose.yml 的目录。 运行 `docker container kill`。强制停止容器。 运行 `docker container rm`。移除容器。 删除 docker-compose.yml 文件。

评论 (0)