关于immich docker-compose.yml配置文件详解

 更新时间:2025年03月03日 14:54:28   作者:博刻  
Immich是一个自托管的照片和视频备份解决方案,允许用户在私有服务器上存储、管理和分享他们的媒体文件,项目提供了自托管、照片和视频备份、易于访问、数据控制、隐私保护等功能,通过Docker容器化部署,用户可以方便地安装和维护Immich应用

前言

Immich是一个自托管的照片和视频备份解决方案,允许用户在私有服务器上存储、管理和分享他们的媒体文件。

这个项目旨在提供一个类似于Google照片或iCloud照片库的体验,但是用户可以完全控制自己的数据。通过自托管,用户不需要依赖第三方云服务提供商来存储私人照片和视频,这增加了隐私保护和数据所有权。

Immich的主要特点包括:

  • 自托管:所有数据都存储在用户自己的服务器上。
  • 照片和视频备份:提供自动的媒体文件备份功能。
  • 易于访问:通过Web界面和移动应用,用户可以轻松访问、管理和分享他们的媒体库。
  • 数据控制:用户完全拥有和控制自己的数据,而不是存储在第三方的云服务中。
  • 隐私保护:由于是自托管解决方案,用户的照片和视频不会被未经授权的第三方访问。

Immich通常通过Docker容器化部署,使得安装和维护变得简单。项目在GitHub上开源,社区驱动,不断更新和改进。

使用Immich,用户需要具备一定的技术背景,特别是关于如何部署和维护自托管服务的知识。

但对于希望提高个人数据隐私和安全性的用户来说,Immich提供了一个很好的解决方案。

docker-compose.yml 配置文件解释

# 指定Docker Compose文件的版本为3.8
version: "3.8"

# 定义项目的名称为immich
name: immich

# 定义多个服务
services:
  # 定义一个服务名为immich-server
  immich-server:
    # 设置容器的名称为immich_server
    container_name: immich_server
    # 从GitHub Container Registry拉取immich-server的镜像,版本由IMMICH_VERSION环境变量指定,默认为release
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    # 容器启动后执行的命令
    command: [ "start.sh", "immich" ]
    # 指定挂载的卷
    volumes:
      # 将宿主机的UPLOAD_LOCATION目录挂载到容器的/usr/src/app/upload
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      # 将宿主机的/etc/localtime挂载到容器中,以只读方式同步时间
      - /etc/localtime:/etc/localtime:ro
    # 指定环境变量文件
    env_file:
      # 使用当前目录下的.env文件
      - .env
    # 指定端口映射
    ports:
      # 将容器的3001端口映射到宿主机的2283端口
      - 2283:3001
    # 定义服务依赖
    depends_on:
      # immich-server依赖于redis和database服务
      - redis
      - database
    # 设置容器的重启策略为始终重启
    restart: always

  # 定义另一个服务名为immich-microservices
  immich-microservices:
    # 设置容器的名称为immich_microservices
    container_name: immich_microservices
    # 使用相同的镜像和版本控制策略
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    # 启动微服务的命令
    command: [ "start.sh", "microservices" ]
    # 同样指定挂载的卷
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    # 使用相同的环境变量文件
    env_file:
      - .env
    # 同样依赖于redis和database服务
    depends_on:
      - redis
      - database
    # 也设置为始终重启
    restart: always

# 以下是定义volumes的部分,用于指定所需的Docker卷
volumes:
  # 定义一个卷名为pgdata,用于持久化PostgreSQL数据库数据
  pgdata:
  # 定义一个卷名为model-cache,用于缓存机器学习模型数据
  model-cache:

这个docker-compose.yml文件为Immich应用定义了一系列服务,包括主应用服务器、微服务、机器学习服务、Redis缓存和PostgreSQL数据库服务。

通过这个配置文件,可以一次性启动Immich应用的所有组成部分,实现服务之间的依赖管理和自动重启策略等功能。

环境变量 .env文件解释

# 你可以在这个URL找到所有支持的环境变量的文档:https://immich.app/docs/install/environment-variables
# 上面这一行是注释,说明了如何找到关于所有支持的环境变量的官方文档。

# 你上传的文件将被存储在这个位置
UPLOAD_LOCATION=./library
# 设置`UPLOAD_LOCATION`环境变量,定义了上传文件的存储位置。这里设置为当前目录下的`library`文件夹。

# 使用的Immich版本。你可以将其固定在特定版本,比如 "v1.71.0"
IMMICH_VERSION=release
# 设置`IMMICH_VERSION`环境变量,指定Immich使用的版本。这里设置为`release`,意味着将使用最新的发布版本。

# 用于Postgres的连接密码。你应该将其更改为一个随机密码
DB_PASSWORD=postgres
# 设置`DB_PASSWORD`环境变量,定义连接PostgreSQL数据库的密码。默认设置为`postgres`,建议更改为更安全的密码。

# 以下这行不需要更改
###################################################################################
# 上面这行是注释,表示以下的环境变量通常不需要修改。

DB_HOSTNAME=immich_postgres
# 设置`DB_HOSTNAME`环境变量,指定PostgreSQL数据库服务的主机名。这里使用的是`docker-compose.yml`文件中定义的服务名称`immich_postgres`。

DB_USERNAME=postgres
# 设置`DB_USERNAME`环境变量,定义连接PostgreSQL数据库的用户名。默认设置为`postgres`。

DB_DATABASE_NAME=immich
# 设置`DB_DATABASE_NAME`环境变量,指定PostgreSQL数据库的名称。这里设置为`immich`。

REDIS_HOSTNAME=immich_redis
# 设置`REDIS_HOSTNAME`环境变量,指定Redis服务的主机名。这里使用的是`docker-compose.yml`文件中定义的服务名称`immich_redis`。

这个.env文件提供了Immich服务和它所依赖的数据库(PostgreSQL)以及Redis服务的基本配置。

通过这些环境变量,Immich服务能够正确地连接到数据库和Redis,同时指定了文件上传的位置。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解Docker守护进程的配置及日志

    详解Docker守护进程的配置及日志

    这篇文章主要介绍了详解Docker守护进程的配置及日志,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Docker安装pypiserver私服的方法步骤

    Docker安装pypiserver私服的方法步骤

    本文主要介绍了Docker安装pypiserver私服的方法步骤,通过Docker安装,可以方便地创建私有包仓库,具有一定的参考价值,感兴趣的可以了解一下
    2025-03-03
  • elasticsearch 组件基于单机的多实例集群部署方法

    elasticsearch 组件基于单机的多实例集群部署方法

    es 作为搜索引擎,应用场景不乏日志分析、网络安全、搜索引擎等,有时也会用作日志数据库使用,毕竟其出色的搜索查询性能,不是同等量级 关系型数据库可以比拟的,这篇文章主要介绍了elasticsearch 组件基于单机的多实例集群,需要的朋友可以参考下
    2024-03-03
  • Docker部署JDK镜像的实现步骤

    Docker部署JDK镜像的实现步骤

    本文主要介绍了Docker部署JDK镜像的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-02-02
  • 利用Docker 运行 python 简单程序

    利用Docker 运行 python 简单程序

    这篇文章主要介绍了利用Docker 运行 python 简单程序,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-04-04
  • docker 搭建 ElasticSearch过程解析

    docker 搭建 ElasticSearch过程解析

    这篇文章主要介绍了docker搭建ElasticSearch的过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,,需要的朋友可以参考下
    2023-08-08
  • docker-compose网络设置之networks的使用

    docker-compose网络设置之networks的使用

    本文详细解释了在使用 Docker Compose时如何配置网络,包括创建、使用和问题解决等方面,介绍了如何通过docker-compose.yml文件快速编排和部署应用服务,同时解决网络隔离问题,感兴趣的可以了解一下
    2024-10-10
  • docker中容器的网络配置常用命令详解

    docker中容器的网络配置常用命令详解

    这篇文章主要介绍了docker中容器的网络配置常用命令详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Windows系统下装Docker至D盘/其他盘最新方法(最准确,直接装)

    Windows系统下装Docker至D盘/其他盘最新方法(最准确,直接装)

    这篇文章主要介绍了Windows系统下装Docker至D盘/其他盘的相关资料,为了避免C盘空间不足的问题,通过修改安装路径,可以将Docker的数据存储在D盘的特定文件夹中,从而有效地管理磁盘空间,需要的朋友可以参考下
    2025-04-04
  • Docker容器实现MySQL多源复制场景分析

    Docker容器实现MySQL多源复制场景分析

    这篇文章主要介绍了Docker容器实现MySQL多源复制,通过本文学习可以掌握多源复制的好处,通过使用场景分析给大家介绍的非常详细,需要的朋友可以参考下
    2022-06-06

最新评论