Docker 部署
本页适用于希望通过已发布镜像快速部署 Misery-photo 的场景。
1. 部署方式
本项目 Docker 推荐方式:拉取已发布镜像并运行。
2. 标准部署(compose + .env)
创建 docker-compose.yml:
yaml
services:
misery-photo:
image: yourname/misery-photo:latest
container_name: misery-photo
restart: always
ports:
- "3000:3000"
env_file:
- .env在同目录创建 .env,至少填写:
bash
ADMIN_USER=admin
ADMIN_PASS=your-password
AUTH_SECRET=your-random-secret
BUCKET_ENCRYPTION_KEY=your-random-key
BUCKET_STORE_PROVIDER=vercel环境变量完整说明见:
启动命令:
bash
docker compose pull
docker compose up -d访问:http://服务器IP:3000
3. 单文件部署(环境变量写在 yaml 内)
如果你希望只维护一个文件,可以把环境变量直接写到 compose 里。
创建 docker-compose.yml:
yaml
services:
misery-photo:
image: yourname/misery-photo:latest
container_name: misery-photo
restart: always
ports:
- "3000:3000"
environment:
- ADMIN_USER=admin
- ADMIN_PASS=your-password
- AUTH_SECRET=your-random-secret
- BUCKET_ENCRYPTION_KEY=your-random-key
- BUCKET_STORE_PROVIDER=vercel
# 多桶(Upstash/Cloudflare)或后备桶变量按需添加
# 参考: https://docs.photo.minori.eu.cc/guide/configuration启动命令:
bash
docker compose pull
docker compose up -d4. 升级策略
bash
docker compose pull
docker compose up -d建议:
- 生产环境优先使用固定版本 tag(例如
v1.0.0),不要长期使用latest。 - 升级前备份关键环境变量。
5. 常见问题
1) 容器启动后接口 500
优先检查环境变量是否配置完整,尤其是:
- AUTH_SECRET
- BUCKET_ENCRYPTION_KEY
- BUCKET_STORE_PROVIDER
完整变量说明:
2) 无法连接对象存储
检查:
- endpoint 和 region 是否正确
- 容器网络是否可出网
- 防火墙/安全组是否拦截
3) 更新后不生效
- 是否执行了
docker compose pull - compose 中是否仍指向旧 tag
4) 我不知道变量该怎么填
请先看: