当前位置: 首页 > news >正文

如何使用 Docker Compose 部署 Immich

如何使用 Docker Compose 部署 Immich

Immich 是一个开源的自建照片和视频备份解决方案,通过 Docker 部署可以快速构建一个稳定的自主管理系统。本文将带你一步步完成使用 Docker Compose 部署 Immich 的过程,帮助你在生产环境中实现高效的媒体管理。


1. 环境准备

在开始部署之前,请确保你已经安装并配置了以下软件:

  • Docker Engine
    请参考官方文档安装 Docker Engine,并确保 Docker 守护进程正在运行。

  • Docker Compose
    Docker Compose 是一个用来管理多容器应用的工具,建议使用最新版。
    可通过命令 docker compose version 检查是否已安装。如未安装,请参考 Docker 官方文档进行安装。

  • 服务器或虚拟机环境
    部署 Immich 建议使用 Linux 系统环境,保证磁盘空间足够存储备份数据。
    如果你在 Windows 或 macOS 上进行测试,也可以通过 Docker Desktop 进行部署。


2. 准备部署文件

2.1 创建部署目录

首先在你的服务器或主机上创建一个用于存放部署文件的目录,例如:

mkdir -p ~/immich-app
cd ~/immich-app

该目录将用来保存 docker-compose.yml 配置文件和环境变量文件 .env

2.2 下载配置文件

建议从 Immich 的 GitHub Releases 页面下载最新的部署配置文件。你可以通过以下命令下载:

wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env

如果你喜欢,也可以直接在浏览器中下载这两个文件,然后将其放入刚创建的目录中(注意将下载后的 example.env 重命名为 .env)。


3. 配置环境变量

打开 .env 文件,你会看到如下示例配置内容:

# Immich 环境变量示例
# 可以在 https://immich.app/docs/install/environment-variables 中查看所有支持的变量# 上传文件存储路径,建议设置为一个专用目录
UPLOAD_LOCATION=./library# 数据库文件存储路径,注意网络共享目录不支持用于数据库
DB_DATA_LOCATION=./postgres# 设置时区,这里示例中将时区设置为上海
TZ=Asia/Shanghai# 指定要使用的 Immich 版本
IMMICH_VERSION=release# 数据库密码,建议修改为随机密码,且仅包含 A-Za-z0-9 字符
DB_PASSWORD=postgres# 数据库基本配置,通常无需修改
DB_USERNAME=postgres
DB_DATABASE_NAME=immich

根据你的实际情况,可以对以下内容做出调整:

  • UPLOAD_LOCATION
    指定一个有足够存储空间的目录,用于存放上传的照片和视频。
  • DB_DATA_LOCATION
    用于存储 PostgreSQL 数据库数据,同样建议设置为专用目录。
  • TZ
    设置你所在的时区。
  • IMMICH_VERSION
    默认为 release 版本,如果你想指定具体版本号,也可以将该值修改为类似 v1.71.0 的格式。
  • DB_PASSWORD
    请修改为你自己的安全密码,数据库默认只在容器网络内部使用。

4. 启动 Immich 应用

在完成 .env 文件配置后,就可以启动 Immich 的 Docker Compose 服务了。在 ~/immich-app 目录下执行以下命令:

docker compose up -d

该命令会进行以下操作:

  • 拉取最新的 Immich 镜像(包括相应的后端服务和数据库镜像)。
  • 根据 docker-compose.yml 文件定义启动多个容器,其中包括:
    • Immich 服务器容器
    • PostgreSQL 数据库容器
    • 其他辅助服务容器(如反向代理,视具体配置而定)

使用 -d 参数后,容器将以后台模式运行,你可以通过 docker compose ps 查看当前运行的容器状态。


5. 验证部署和后续配置

5.1 验证服务状态

  • 访问服务器的 IP 地址或域名,默认情况下 Immich 应用会监听 80 端口。如果你在部署过程中修改了端口,请使用对应端口访问。
  • 检查日志:
    可以通过命令 docker compose logs -f 实时查看容器启动和运行日志,确认各项服务是否正常工作。

5.2 根据业务需要进行调整

  • 数据备份与存储:
    确保 UPLOAD_LOCATIONDB_DATA_LOCATION 指向的路径有足够的磁盘空间,并且在生产环境中可以通过挂载持久化卷来保障数据不丢失。

  • 安全配置:
    根据实际生产环境注意网络安全,建议为 Docker 服务和数据库容器设置合适的防火墙规则,不直接暴露数据库端口。同时,建议使用 HTTPS 对外提供服务,可通过反向代理(例如 Nginx)实现 TLS 加密。

  • 升级与维护:
    当 Immich 发布新版本时,只需更新 IMMICH_VERSION 变量并重新拉取镜像,然后重启服务即可完成升级。


6. 常见问题排查

  • 如果容器启动失败
    请检查 .env 文件中环境变量的配置是否正确,尤其是路径配置、时区和数据库密码设置。

  • 如果服务无法访问
    请确认 Docker 主机防火墙或安全组规则是否允许访问相应端口;另外,也可以检查 docker compose logs 中是否有错误信息。

  • 资源不足问题
    如果发现容器运行时磁盘空间不足或内存占用高,请检查宿主机资源,并考虑扩展存储或为容器设置资源限制。


7. 总结

通过 Docker Compose 部署 Immich 能够快速搭建一个高效、易于管理的自建照片与视频备份系统。整个部署过程主要包括以下步骤:

  1. 准备部署目录及环境文件(docker-compose.yml 和 .env)。
  2. 修改环境变量文件,调整存储路径、时区、版本及数据库密码等配置。
  3. 执行 docker compose up -d 命令启动容器服务。
  4. 根据日志和访问状态验证部署是否成功,再根据实际需求进行安全、资源等方面的优化。

希望这篇指南能帮助你轻松部署 Immich,实现私有云相册系统的快速上线。如有任何疑问或遇到问题,欢迎在评论区交流讨论或参考 Immich 官方文档 了解更多详细信息。

Happy deploying!

http://www.xdnf.cn/news/569125.html

相关文章:

  • 《棒球百科知识》世界棒球十强国家是如何发展·棒球1号位
  • WordPress Madara插件存在文件包含漏洞(CVE-2025-4524)
  • 实验分享|基于千眼狼sCMOS科学相机的流式细胞仪细胞核成像实验
  • XCOSnTh-fatfsShell
  • 腾讯位置服务地点搜索开发指南
  • [Min-Max Normalization] [Z-Score Normalization]
  • 使用vue2做一个生成二维码的案例【可当组件使用】
  • JC/T 2848-2024 玻璃纤维增强石膏(GRG)装饰制品检测
  • VS2022:使用命令行启动项目
  • 2023 睿抗机器人开发者大赛CAIP-编程技能赛-本科组(国赛) 解题报告 | 珂学家
  • vscode连接WSL卡住
  • js不同浏览器标签页、窗口或 iframe 之间可以相互通信
  • 虚拟机下的OpenWrt磁盘Overlay扩容
  • genicamtl_lmi_gocator_objectmodel3d
  • 掌握HTTPX:从基础到高并发工程实践
  • 自由开发者计划 001:创建一个用于查看 Jupyter Notebook 的谷歌浏览器插件
  • FPGA降低功耗研究
  • 【76. 最小覆盖子串】
  • 操作系统 第四章 -2
  • Docker安装MinIO对象存储中间件
  • 图片识别(TransFormerCNNMLP)
  • 分享一些多模态文档解析思路
  • 蓝桥杯3503 更小的数
  • polarctf-web-[某函数的复仇]
  • 基于python的机器学习(七)—— 数据特征选择
  • PostgreSQL中通过查询数据插入到表的几种方法( SELECT INTO和INSERT INTO ... SELECT)
  • uniapp+vue3 随机、换一批
  • anaconda创建环境出错HTTPS
  • Captiks动捕与步态分析步态分析系统MOVIT:16μs 无线同步 + 快速校准,破解传统光电困局
  • 集成 OpenTelemetry + Grafana:实现 ABP VNext 的全链路可观测性